如何使函数内部创建的变量变为全局变量?

时间:2015-05-23 03:37:58

标签: python function global-variables

我在我正在工作的程序中有一个函数,我在这个函数中命名了一个变量,我想把它变成全局的。例如:

def test():
   a = 1
   return a

test()

print (a)

我只能访问“a”,因为它一直说a未定义。

任何帮助都会很棒,谢谢。

3 个答案:

答案 0 :(得分:3)

我已经对你的功能做了一些改变。

def test():
    # Here I'm making a variable as Global
    global a
    a = 1
    return a

现在,如果你这样做

print (a)

输出

1

答案 1 :(得分:2)

正如Vaibhav Mule回答的那样,你可以在函数内部创建一个全局变量,但问题是你为什么这样做?

首先,您应该小心使用任何类型的全局变量,因为它可能被视为this的不良做法。从函数创建全局更糟糕。这将使代码极不可读且难以理解。想象一下,您正在阅读使用某些随机a的代码。首先必须找到创建该事物的位置,然后尝试找出程序执行期间发生的事情。如果代码不小,你将注定失败。

所以答案是你的问题只是在分配之前使用global a,但你不应该。

BTW,如果你想要c ++的静态变量这样的功能,请检查this提问。

答案 2 :(得分:1)

首先,重要的是要问'为什么'会想要那个?本质上,函数返回的是“本地计算”(通常)。话虽如此 - 如果我必须在“全局范围”中使用函数的返回'value',那么将它分配给全局变量会更容易。例如在你的情况下

def test():
    a = 1    # valid this 'a' is local 
    return a

a = test() # valid this 'a' is global
print(a)

但是,重要的是要问'为什么'我想这样做,通常?