我对局部变量和全局变量之间的区别感到困惑。我知道全局变量在函数外声明,而local在函数中声明。但是,我想知道它是否如此:
def func(l):
a = 0
n = len(l)
w = l[0]
while...
我的问题是,在我作为一个例子写的函数中,我知道a是一个局部变量但是其他两个呢?它们也是局部变量吗?
答案 0 :(得分:1)
l
是您传递给函数的位置变量,w
也是w
,因为l[0]
是"副本" 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))
要拥有全局变量,您需要使用global关键字将变量声明为全局变量。
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]
返回:
sudo python3.6 -m pip install -I numpy
另请注意,总是有更好的方法来做一些事情,而不是声明全局变量,因为随着代码的扩展,它会变得更加混乱。
答案 1 :(得分:0)
局部变量:当我们在函数内声明一个变量时,它变成一个局部变量。 全局变量:当我们在函数外声明一个变量时,它变成一个全局变量。
#same name for local and global variable.
a = 1 #this is global variable
def my_function():
a = 2 #this is local variable
print("a= ", a) #display local var
my_function()
print("a = ", a) #display global var.
a = 1 #This is global var
def my_function():
global a #This is global var.
print("global a= ", a) #display new value
a = 2 #modify global var value
print("modify a = ", a) #display a new value
my_function()
print("global a= ", a) #display modified value