pio*_*kuc 9 python import module
我正在阅读http://docs.python.org/2/tutorial/modules.html#more-on-modules,并想知道以下内容是否正确:
模块可以导入其他模块.习惯但不要求将所有import语句放在模块的开头(或脚本,就此而言).导入的模块名称放在导入模块的全局符号表中.
显然不是:
>>> def foo(): import sys
...
>>> foo()
>>> sys.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
Run Code Online (Sandbox Code Playgroud)
有关在线演示,请访问http://ideone.com/cLK09v.
那么,它是Python文档中的错误还是我不明白?
kin*_*all 12
是的,这是文档错误.该import
语句将名称导入当前名称空间.通常import
在函数和类之外使用,但正如您所发现的,它确实在其中起作用.在您的示例函数中,在调用函数时,模块将导入到函数的本地名称空间中.(你没有这样做,但无论如何都不能在功能之外使用它.)
但是,global
关键字在此处起作用:
def foo():
global sys
import sys
foo()
sys.path
Run Code Online (Sandbox Code Playgroud)