我正在使用最新的python版本;我在一个文件中有一个简单的函数,然后另一个文件调用了该函数。问题是无法打印来自函数的变量。
file1.py
:
var = "one"
def first():
global var
if smt == True:
var = "1"
else:
var = "W"
file2.py
:
from file1 import *
first()
print(var)
这是简化版本,因为我有更多不相关的代码,但是问题仍然存在,我的变量由于某些原因没有改变。
答案 0 :(得分:1)
通常不鼓励使用import *
的做法;由于可能会发生名称空间冲突,因此如果导入量很大,效率很低。
我个人会进行明确的导入:from file1 import first
我还相信您对global
是什么有错误的认识。这可能会有所帮助:
在第一种情况下,全局关键字是没有意义的,因此不是 正确。在模块级别定义变量使其成为全局变量 变量,则不需要全局关键字。
第二个例子是正确的用法。
但是,全局变量最常见的用法是不使用 全局关键字在任何地方。仅当您使用global关键字时,才需要 想要在函数/方法中重新分配全局变量。
请记住,只需使用var
关键字,您就不会在file2.py
中拥有global
;如果您想访问变量var
,可以使用类似以下内容的
在file1.py
中:
var = "one"
def first():
global var
var = "1"
在file2.py
中:
import file1
file1.first()
print(file1.var)