[Python]局部变量和全局变量(变量作用域)以及示例说明

2021-05-25 582点热度 0人点赞 0条评论

先接触Java或者其他语言的程序员,如果刚接触Python的话,需要对Python的变量作用域特别了解下,可能对Python里的变量作用域有点不是很理解,比如如下的程序,如果用Java的思维来看,我也以为会输出x=20

x = 50


def func1():
    x = 20


func1()
print(x) #x=50还是x=20?

局部变量

在函数定义中声明的变量,他们与在函数外使用的其它同名变量没有任何关系,即变量名称对函数来说是局部的。

类似函数def的还有class、lambda等语句也产生局部变量作用域

但是if、try、for等语句并不会产生新的作用域,换句话说就是if,try,for等语句里面定义的变量并不会随着该语句执行结束而回收,而是可以到处引用的,if,try,for等语句内变量作用域实际范围受其所在 的def,class,lambda范围约束

x = 50      #全局变量

def func1():
    x = 20      #def内局部变量的名字和全局变量名字相同,但互不影响
    print '局部变量x: ', x

func1()
print '全局变量x: ', x

# 结果如下, 函数内的赋值并没有影响到函数外 x 的值
局部变量x:  20
全局变量x:  50

全局声明

如果想在函数内改变某一个全局变量,那必须使用global语句。

x = 50  # 全局变量

def func1():
    global x        #定义全局变量
    x = 20  #定义后的 x 变量可以在全局范围内更改
    print '函数内变量x: ', x

func1()
print '全局变量x: ', x
# 结果,函数内的赋值更改了函数外 x 的值
局部变量x:  20
全局变量x:  20

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论