有两个py文件。 util.py
def add_sum():
print(x + 3)
test.py
from util import *
x=3
add_sum()
运行test.py时出现错误:
Traceback (most recent call last):
File "test.py", line 45, in <module>
add_sum()
File "util.py", line 10, in add_sum
print(x + 3)
NameError: name 'x' is not defined
变量 x 是全局变量,为什么函数无法达到 x 并引发错误?
答案 0 :(得分:2)
Python的“全局变量”只是它们在其中定义的模块的全局变量。这是设计使然-仅在确实无法避免使用全局变量时才应使用全局变量,因为这会使代码更难以理解,测试和维护。 / p>
对于您而言,正确的方法是将x
显式传递给您的函数:
# util.py
def add_sum(x):
return x + 3
和
# test.py
# NB: star imports are evil too, for the very same reasons
from util import add_sum
x=3
print(add_sum(x))