gpt4 book ai didi

python - 局部变量和全局变量的区别

转载 作者:行者123 更新时间:2023-11-28 22:25:16 26 4
gpt4 key购买 nike

我对局部变量和全局变量之间的区别感到困惑。我知道全局变量是在函数外声明的,而局部变量是在函数中声明的。但是,我想知道是否是这样:

def func(l):
a = 0
n = len(l)
w = l[0]
while...

我的问题是,在我编写的示例函数中,我知道 a 是一个局部变量,但其他两个呢?它们也是局部变量吗?

最佳答案

l是您传递给函数的位置变量,w 也是如此。自 wl[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不是吗?

请注意 lists很特别,因为您不需要声明 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com