如何使在函数内创建的变量成为全局变量?
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' 通常我想这样做吗?
我在我正在处理的程序中有一个函数,我在这个函数中命名了一个变量,我想让它成为全局变量。例如:
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' 通常我想这样做吗?