局部变量和全局变量之间的区别

时间:2017-08-11 14:52:28

标签: python

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

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

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

2 个答案:

答案 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)

局部变量:当我们在函数内声明一个变量时,它变成一个局部变量。 全局变量:当我们在函数外声明一个变量时,它变成一个全局变量。

python程序了解差异本地变量和全局变量

#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