python基础语法5-2变量

变量

变量的作用域(变量的有效范围)

分类:
全局变量:在函数内外都有效的变量就是全局变量(使用global关键字声明)
局部变量:仅仅在函数内部有效的变量就是局部变量

举个例子,就像做手术时候用的麻醉:
全身麻醉:相当于全局变量
局部麻醉:相当于局部变量
全局变量(特征):
globals() 
获取当前位置的全部全局变量。
1.在函数外部可以正常访问
2.在函数内部也可以正常访问
局部变量(特征):
locals()  
获取当前作用域的变量(在局部中,是获取locals()之前的所有变量)
1.在函数外部不可以访问
2.在函数内部可以访问
将局部变量提升为全局变量:
在函数内部使用global关键字可以将局部变量提升为全局变量。
def func():
 	global #变量1,变量2,...
	global #提升的全局变量是真正的全局变量
    global num,num2
    num2 = 2
    num = 1
func()
print(num)
print(num2)
真正的全局变量:
使用global关键字对全局变量进行声明才可以在函数内部任意操作,否则在函数内部只能访问,而不能修改
num = 3
def func():
    global num
    num = 2
    print(num)
func()
print(num)
变量作用域链:
 变量的有效范围可以向函数内部层层向下传递
 如果其他的函数内部没有使用global,可以访问变量,无法修改
 如果其他的函数中使用gloabl,可以进行任何操作

*nonlocal是在Python3.2之后引入的一个关键字,它是用在封装函数中的。
nonlocal  适用于在局部函数中的局部函数, 把内层的局部变量设置成上一个外层局部可用,但是还不是全局的。他与global可以混合使用,下面的代码示例可以分出global与nonlocal区别
def scope_test():
    def do_local():
        spam = "局部变量"  #1
    def do_nonlocal():
        nonlocal  spam        #使用外层的spam变量
        spam = "nonlocal 变量"  #2
    def do_global():
        global spam
        spam = "global 变量" #3
    spam = "test spam"
    do_local()
    print("本地分配后:", spam)
    do_nonlocal()
    print("nonlocal分配后:",spam)
    do_global()
    print("global分配后:",spam)
 
scope_test()
print("全局范围:",spam)

输出的结果是:test sapm,nonlocal变量,nonlocal变量,global变量,你答对了吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值