栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从控制台重新加载python模块的正确方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从控制台重新加载python模块的正确方法

根据要求,您能做的最好的就是

>>> from project.models.user import *>>> import project # get module reference for reload>>> reload(project.models.user) # reload step 1>>> from project.models.user import * # reload step 2

如果直接使用用户模块而不是直接使用用户模块,那将更好,更清洁

import *
(这几乎永远不是正确的方法)。那就是

>>> from project.models import user>>> reload(user)

这会做您想要的。但是,这不是很好。如果您真的需要如此频繁地重新加载模块,我必须要问:为什么?

我的怀疑(以前的询问类似问题的人的经验作为后盾)是您正在测试模块。有很多方法可以测试模块,而在交互式解释器中手动完成模块是最糟糕的方法之一。将您的一个会话保存到文件中,然后使用

doctest
进行快速修复。或者,将其写为程序并使用
python-i
。但是,唯一真正好的解决方案是使用
unittest
模块。

如果不是那样,那么希望它会更好,而不是更糟。确实没有什么好用的

reload
(实际上,它已在3.x中删除)。它无法有效工作-
您可能会重新加载模块,但保留以前版本的剩余内容。它甚至不适用于所有类型的模块-扩展模块在重新加载时将无法正确重新加载,有时甚至会严重损坏。

在交互式解释器中使用它的上下文不会对您正在做什么以及真正的最佳解决方案有很多选择。在它外部,有时人们习惯于

reload()
实现插件等。这充其量是很危险的,并且可以使用
exec
(我们所处的邪恶领域)或分离的过程来进行不同的操作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号