两种不同定义之间的变量

时间:2020-07-19 18:00:51

标签: python variables

我想从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()

3 个答案:

答案 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)

代码肯定会显示错误,因为在函数内部创建的变量仅用于该函数,称为局部变量,而在函数外部创建的变量称为全局变量。

因此

  1. 您只需在函数外部全局创建变量,那么它就不会显示错误。
def a(d):
    if d == 0:
        print("correct")
    else:
        print ("not correct")
#################
a(0)
  1. ,否则,如果要在不同函数中使用变量,则可以使用内置函数global()。 并确保您也具有这些功能。