Python文档中的错误?

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)