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

这篇博客探讨了在Python中如何正确地重新加载模块,尤其是`reload()`函数的使用。作者建议避免使用`*`通配符导入,并给出了正确的模块重载步骤。文章指出,手动交互式测试不是理想方式,推荐使用doctest、unittest或编写独立脚本进行测试。此外,还警告了`reload()`的潜在问题,包括可能的遗留状态和不适用于所有模块的情况,特别是在需要频繁插件更新的场景下。
摘要由CSDN通过智能技术生成

正如所问,你能做的最好

>>> 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

如果您直接使用用户模块,而不是进行导入*(这几乎不是正确的方式),那将会更好,更干净.那就是

>>> from project.models import user

>>> reload(user)

这将做你想要的但是,这不是很好.如果您真的需要经常重新加载模块,我必须问:为什么?

我的怀疑(由以前的经验与人们提出类似的问题进行备份)是您正在测试您的模块.有很多方法可以测试一个模块,手动交互式解释器是最糟糕的方法之一.将一个会话保存到一个文件中,并使用doctest进行快速修复.或者,将它作为程序写出来,并使用python -i.唯一真正很棒的解决方案是使用unittest模块.

如果不是这样,希望是更好的东西,而不是更糟.真的没有很好的使用重新加载(实际上,它在3.x中被删除).它不能有效地工作 – 您可能会重新加载模块,但从以前的版本中留下剩菜.它甚至不适用于各种模块 – 扩展模块在重新加载时不会正确重新加载,有时甚至可能会非常糟糕.

在互动解释器中使用它的上下文不会对您正在做什么留下很多选择,以及真正的最佳解决方案.在外面,有时候人们使用reload()来实现插件等等.这是至关重要的,并且可以使用exec(我们发现自己的恶意领域)或者隔离的进程来进行不同的处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值