我想从b()调用var d。但是我得到这个错误。我听说您可以尝试使用全局变量,但没有成功。
错误:
Traceback (most recent call last):
File "C:/Users/user2/Desktop/def.py", line 9, in <module>
a()
File "C:/Users/user2/Desktop/def.py", line 3, in a
if d == 0:
NameError: name 'd' is not defined
代码:
def a():
if d == 0:
print(correct)
else:
print (not correct)
def b():
d = 0
a()
答案 0 :(得分:0)
您可以在函数外部定义变量,它应该可以工作。尽管最好作为参数传递。
d=0
correct="It is correct"
notcorrect="It is not correct"
def a():
if d == 0:
print(correct)
else:
print(notcorrect)
a()
答案 1 :(得分:0)
您可以使用“父”范围的变量,即使最好将它们传递给方法。您的示例中从未调用函数A
。函数中的定义只是为此函数或从那里调用的函数定义的。
我建议您阅读有关范围的信息: https://pythonspot.com/scope/(还有大量其他教程,只需使用搜索引擎即可;)
您可以做什么:
b()
您还可以做什么:
d = 0
a() # correct
但是您应该做的可能是这样的:
def b():
d = 0
a()
b() # correct
全局变量存在于python中,但是特别是对于初学者来说,这似乎通常是一个简单的解决方案,但是一旦您的代码增长,如果不小心使用它就会变得非常复杂。.了解变量的范围以及如何将它们传递到其他功能是必经之路。
答案 2 :(得分:0)
代码肯定会显示错误,因为在函数内部创建的变量仅用于该函数,称为局部变量,而在函数外部创建的变量称为全局变量。
因此
def a(d):
if d == 0:
print("correct")
else:
print ("not correct")
#################
a(0)
global()
。
并确保您也具有这些功能。