这是我的代码:
def a():
print aa
def b():
aa = 'aaaa'
a()
b()
显示错误:
Traceback (most recent call last):
File "g.py", line 12, in <module>
b()
File "g.py", line 10, in b
a()
File "g.py", line 6, in a
print aa
NameError: global name 'aa' is not defined
必须在b函数
中定义aa
我能做什么,
感谢
答案 0 :(得分:5)
aa仅在b()的范围内定义。您可以将变量定义拉出函数或将其用作参数。
这应该有效:
def a():
print aa
def b():
global aa
aa = 'aaaa'
a()
b()
当然,这也应该有效:
def a(aa):
print aa
def b():
aa = 'aaaa'
a(aa)
b()
答案 1 :(得分:2)
aa = 'aaaa'
仅作为函数b()本地。要在()内打印,你需要将它返回到像这样的
def a(arg):
print arg
def b():
aa = 'test'
return a(aa)
或者(这是最糟糕的做法。你不应该这样做,我只是把它作为解释)
def b():
global aa
aa = 'test'
a()
答案 2 :(得分:1)
def a():
global aa
print aa
def b():
global aa
aa = 'aaaa'
a()
b()
一种解决方案,但最好将aa
作为参数传递给a()
答案 3 :(得分:0)
我建议为你的函数和变量使用更好的名字 - a(),b()是没有意义的。 要使代码工作,您必须创建一个全局变量(不推荐)或将其传递给函数:
def a(aa):
print aa
def b():
aa = 'aaaa'
a(aa)
b()
答案 4 :(得分:0)
aa = None
def a():
print aa
def b():
global aa
aa = 'aaaa'
a()
b()