假设我们将以下内容保存到名为test.py
的Python文件中:
x = 14
def print_x():
print x
def increment_x():
x += 1
然后从同一目录中的交互式Python shell运行以下命令:
from test import print_x, increment_x
print_x()
increment_x()
print x
为什么第三次调用产生错误?不需要为前两个工作定义x
吗?
答案 0 :(得分:0)
这些函数不会抛出错误,因为它们仍然存在于模块测试中,并且它们仍然在模块测试中看到x。当您在其他位置导入对函数的引用时,它不会真正移动,或者与其原始上下文断开连接。如果它确实没有太多用于模块。
答案 1 :(得分:0)
您收到范围错误消息的原因是因为x
仅在test.py
中是全局的,并且当您执行此操作时:
from test import print_x, increment_x
您实际上并未将x导入第二个脚本的全局范围。
所以,如果你想在第二个脚本中创建x global,请执行:
from test import *
尝试使用IDLE中的 DEBUGGER 工具查看x
何时GLOBAL
以及何时不是