Python中如何从导入的函数中获取可在当前文件使用的变量?
解决方法
首先明确问题:x 是 test1.py 中 func 函数的局部变量,函数执行完毕后局部变量会被销毁,不会自动暴露到模块级别或其他导入模块中。你之前尝试的 global 关键字无效,是因为没匹配正确的用法场景。
下面是两种可行的解决方式:
方式一:通过函数返回值传递(推荐)
不需要修改 test1.py,直接在 test2.py 中接收 func 的返回值并赋值给 x:
from test1 import * x = func() # 将func返回的100赋值给当前模块的x y = Z + x print(y)
这是最符合Python变量作用域设计的方式,局部变量的结果本来就该通过返回值传递,避免全局变量带来的副作用。
方式二:将x改为模块级全局变量
修改 test1.py,把 x 定义为模块级变量,并用 global 让函数修改这个变量:
Z = 50 x = 0 # 先声明模块级全局变量 def func(): global x # 声明使用模块级的x x = 100 return x
之后在 test2.py 中调用 func() 后,x 就会被更新为100,此时可以直接使用:
from test1 import * func() y = Z + x print(y)
注意:如果只在 func 里用 global x 但不在模块开头定义 x,调用 func 后 test1 会生成模块级 x,但因为 from test1 import * 是在导入时加载变量,此时 test2 不会自动获取新生成的 x,需要改用 import test1 然后通过 test1.x 访问。
内容的提问来源于stack exchange,提问作者Axel Hjärtström
相关产品推荐
相关产品推荐

