我的全局变量有问题,需要在函数中设置(在我的示例中为 f1)并在第二个函数(f2)中按原样恢复。全局值由f0设置,不可编辑。我必须用 f0 发送全局 n 值
在我的测试中,我在单个文件中进行了
class mytest():
def f1(value):
global n
n = value
print('test f1 : '+n)
def f2():
print('test f2 : '+n)
def f0():
mytest.f1("5")
mytest.f2()
f0()
f1 和 f2 的结果为 5,正如预期的那样。 现在我分成2个文件(为了重现我的需要。这里没有选择,它必须被拆分)
文件1
def f0():
file2.mytest.f1("5")
文件2
class mytest:
def f1(value):
global n
n = value
print('test f1 : '+n)
def f2():
print('test f2 : '+n)
f2()
错误是:名称“n”未定义
f1 始终由应用程序首先运行,然后调用 f2 我需要 f2 (以及我后面需要的 fX 函数)来保留 f1 中的“n”值 我读过类似的问题 从Python函数内部访问全局变量
但这些并不能回答我的问题 谢谢你
你不能像Python中的对象一样使用文件,你必须导入类才能在你的file1中使用它:
from .file2 import mytest
之后您可以在您的文件中使用它1
def f0():
mytest.f1("5")
但是它会抛出错误,因为在类构造函数中,您在 f1() 之前调用 f2(),因此 n 没有实例化。
Traceback (most recent call last):
File "C:\Dev\tmp\file1.py", line 1, in <module>
from file2 import mytest
File "C:\Dev\tmp\file2.py", line 1, in <module>
class mytest:
File "C:\Dev\tmp\file2.py", line 10, in mytest
f2()
File "C:\Dev\tmp\file2.py", line 8, in f2
print("test f2 : " + n)
^
NameError: name 'n' is not defined
顺便说一句,你不应该在类构造函数中调用函数。
我不明白为什么需要全局变量,你能解释一下吗?