Python:在函数之间使用变量

时间:2014-03-29 23:15:44

标签: python function variables python-2.7

在Python中有些东西一直在困扰我(哈!)(我使用2.7)。这是我在运行此代码时获得NameError: global name 'x' is not defined

def function1():
    x = 1
    return 0

def function2():
    function1()
    print(x)
    return 0

function2()

对我来说这不是一个严重的问题,但我真的好奇为什么这不会打印1.它在我的脑海中是有道理的。定义变量x的函数在调用之前定义,函数在print(x)之前调用。我真的不明白为什么这段代码不起作用。也许我正在考虑的方式是有缺陷的。无论哪种方式,为什么那个代码不打印1?在此先感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

是的,你的想法有缺陷。 x中定义的变量function1是该函数的本地变量。它在其他任何地方都不存在。当你用另一个函数调用一个函数时,这并不意味着来自被调用函数的所有变量都被转储到调用函数中。仅传回返回值。如果要在第二个函数中使用x,则应从function1返回。 (即使这样,它也不会在x中创建一个名为function2的变量。它只会返回,然后您可以将其分配给{中的变量{ {1}}如果你想要,或打印,或其他什么。)

答案 1 :(得分:0)

两个函数中的

使用global x作为第一行。这将使您的代码工作。但是,无论如何,在函数之间传递变量并不是一个好习惯。返回值和使用参数是一种很好的做法。

如果您正在测试变量共享,那么您正在使用全局变量。为此,与javascript不同,你需要在尝试获取它之前使用global x,就像在php中一样(除非你在php中没有错误,除非使用严格模式)。

答案 2 :(得分:0)

x范围仅 function1()内部,这就是为什么您无法在x内打印function2(),甚至如果您正在致电function1()(当您从function1()返回时,x 将被销毁

答案 3 :(得分:0)

因为function1范围内的变量x是本地的,function2不是"""这个变量。