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

How do I make a variable created inside a function become global?

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

def test():
   a = 1
   return a

test()

print (a)

而且我无法访问 "a" 因为它一直说 a 未定义。

如有帮助将非常感谢。

我对你的功能做了一些修改。

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

现在如果你这样做

print (a)

它输出

1

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

首先,您应该小心使用任何类型的全局变量,因为它可能被认为是 this 的不良做法。从函数创建全局更糟糕。它会使代码极难阅读和理解。想象一下,您正在阅读使用了一些随机 a 的代码。你首先要找到那个东西是在哪里创建的,然后试着找出它在程序执行过程中发生了什么。如果代码不小,你就完蛋了。

所以你的问题的答案是在赋值之前简单地使用 global a 但你不应该。

顺便说一句,如果你想要 c++ 的静态变量之类的功能,请查看 this 问题。

首先,重要的是要问 'why' 有人想要吗?本质上,函数 returns 是 'local computation'(通常)。话虽如此 - 如果我必须在 'global scope' 中使用函数的 return 'value',将其“分配给全局变量”会更容易。例如你的情况

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

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

不过,重要的是要问 'why' 通常我想这样做吗?