Python基础——第九章 第二部分 函数作用域 全局变量global、局部变量nonlocal
发布日期:2021-05-08 21:02:46 浏览次数:15 分类:精选文章

本文共 1192 字,大约阅读时间需要 3 分钟。

在函数里面也有可以定义变量,那函数里面的变量名如果和函数外面的变量名重名,会相互影响吗?

1、作用域

1.1、外部不能访问函数内部变量

#外部不能访问内部变量x=10def func():    y=1func()print(x)     '''执行结果:10'''print(y)     '''执行结果:报错,提示'y'未被定义                这里仅输出了函数外部x的值'''

1.2、函数内部能够访问函数外部变量

x = 123def func():	print(x)	return x + 1func()'''执行结果: 123'''

1.3、函数内部不能修改外部变量

x = 123def  func():	x = x + 1	return xfunc()'''UnboundLocalError: local variable 'x' referenced before assignment这里x被定义为局部变量,仅只用函数内部,所以报错'''

1.4、函数内部和函数外部变量相同,访问内部变量

x = 100print("执行结果:",x, id(x))def  func():	x = 999	print("执行结果:",x, id(x))	x += 1	return xa = func()print("执行结果:",a,id(a))'''执行结果: 100 8791370633984执行结果: 999 38956016执行结果: 1000 38955984'''

#当函数外部变量(全局变量)和函数内部变量(局部变量)相同时,函数内部变量可以使用外部变量,但不可修改外部变量

#函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量

这里提出一个问题,如果想要去修改外部变量呢?

 

2、golbal和nonlocal

2.1、golbal全局变量

函数内部如果需要改变全局变量,就需要使用global修饰变量

x = 100     #全局变量print("执行结果:",x)def  func():	global x   #将局部变量修改成全局变量	x += 1	return xa = func()print("执行结果:",a)'''执行结果: 100执行结果: 101'''

2.2、nonlocal局部变量

在函数嵌套函数的情况下,同样也有函数作用域的问题,但是python3中提供了方便,只需要使用nonlocal就可以在里层函数内部修改外部函数变量

x=11    #全局变量def func():	x=99  #局部变量	def func2():		nonlocal x  #将内层局部变量变成成外层局部变量		x+=1		return x	return func2()print("执行结果:",func())

上一篇:Python基础——第九章 第三部分 闭包、递归、回调
下一篇:Python基础——第九章 第一部分 匿名函数及自定义函数,区别

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月29日 22时55分47秒