我对局部变量和全局变量之间的区别感到困惑。我知道全局变量是在函数外部声明的,而局部变量是在函数中声明的。但是,我想知道是否是这样:
def func(l):
a = 0
n = len(l)
w = l[0]
while...
我的问题是,在我作为示例编写的函数中,我知道 a 是局部变量,但其他两个呢?它们也是局部变量吗?
最佳答案
l
是您传递给函数的位置变量,w
也是如此,因为 w
是 的“副本” >l[0]
要拥有全局变量,您需要使用 global 关键字将该变量声明为全局变量。
x = 1
y = 2
def func(l):
global x
x = 4
l = 5
print("x is {0}, y is {1}".format(x,l))
func(y)
print("x is {0}, y is {1}".format(x,y))
返回:
x is 4, y is 5
x is 4, y is 2
请注意,x
现在已更改,但 y
没有更改?
请注意,列表
很特殊,因为您不需要声明global
关键字来添加或删除列表:
x = []
def func():
x.append(3)
print("x is {0}".format(x))
func()
print("x is {0}".format(x))
返回:
x is [3]
x is [3]
但是对列表的引用不是全局的,因为它们是列表的“副本”:
x = [3]
y = 1
def func():
y = x[0]
print("y is {0}".format(y))
func()
print("y is {0}".format(y))
返回:
y is 3
y is 1
另外,重新分配列表变量不是全局的:
x = [3]
def func():
x = [2]
print("x is {0}".format(x))
func()
print("x is {0}".format(x))
返回:
x is [2]
x is [3]
还要注意,总是有比声明全局变量更好的方法来做某事,因为随着代码的扩展,它会变得更加困惑。
关于python - 局部变量和全局变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45638126/