use*_*514 44 python testing import module
如何测试模块是否已在python中导入?
例如,我需要基础知识:
if not has_imported("sys"):
import sys
Run Code Online (Sandbox Code Playgroud)
也
if not has_imported("sys.path"):
from sys import path
Run Code Online (Sandbox Code Playgroud)
谢谢!
RGS.
感谢您的所有评论:代码已粘贴在此处. 自动导入文件夹中的所有子模块然后调用相同的名称函数 - python runtime inspect相关
小智 50
如果你想通过不导入两次来优化,那就省去麻烦了,因为Python已经解决了这个问题.
如果您需NameErrors
要这样做以避免或者其他事情:修复您的草率编码 - 确保您不需要这个,即在您使用之前定义(导入)所有内容(如果是导入:一次,在启动时,在模块级别) .
如果你有充分的理由:sys.modules
是一个包含已经导入的所有模块的字典.但它仅包含模块,而且由于方式的from <module> import <variable>
作品(导入整个模块像往常一样,提取你从它导入的东西),from sys import path
只会增加sys
对sys.modules
(如果它是不是已经进口在启动时).像你预期的那样from pkg import module
增加pkg.module
.
Joh*_*ohn 14
我觉得已经接受的答案并不完全正确.
多次导入同一模块时,Python 仍然有开销.Python 肯定会处理它而不会给你一个错误,但这并不意味着它不会减慢你的脚本速度.正如您将从下面的URL中看到的那样,多次导入模块时会产生很大的开销.
例如,在某种情况下,除非在特定条件下,您可能不需要某个模块,如果该模块很大或开销很大,则有理由仅在条件下导入.这并没有明确表示你是一个草率的编码器.
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Import_Statement_Overhead
小智 8
from sys import modules
try:
module = modules[module_name]
except KeyError:
__import__('m')
Run Code Online (Sandbox Code Playgroud)
这是我在运行时更改代码的解决方案!
归档时间: |
|
查看次数: |
37134 次 |
最近记录: |