在Python 3中,当我在全局范围内使用exec
导入模块时,它可以工作。但是当我在函数中执行此操作时,即使没有导入错误,Python也无法识别模块名称。
在全局范围内成功导入和使用 sys
:
>>> sys.argv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> exec('import sys')
>>> sys.argv
['']
没有导入错误,尽管不能使用从函数导入的os
:
>>> def import_os():
... exec('import os')
... os.listdir('.')
...
>>> import_os()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in import_os
NameError: name 'os' is not defined
>>>
有什么主意如何在函数中完成这项工作?