繁体   English   中英

导入模块:函数内的全局变量

[英]import module : global variable within function

有两个py文件。 实用程序

def add_sum():
    print(x + 3)

测试文件

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并引发错误?

Python 的“全局变量”只是定义它们的模块的全局变量。这是设计使然 - 只有在确实无法避免它们时才应该使用全局变量,因为它会使代码更难理解、测试和维护。

在您的情况下,正确的方法是明确地将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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM