/**
* @file
* @author jUicE_g2R(qq:3406291309)————彬(bin-必应)
* 一个某双流一大学通信与信息专业大一在读的技术彩笔
*
* @brief python小白入门笔记
*
* @copyright 2022.8
* @COPYRIGHT 原创技术笔记:转载需获得博主本人同意,且需标明转载源
*
* @language python
* @Version 1.0还在学习中
*/
#26补充知识
#26.4与作用域相关的两个关键字
'''
global: 在局部,引入全局变量
nonlocal(local: 局部) :在局部,引入外层的局部变量(上一级)
'''
#26.4.1 global
'''在函数内部修改全局变量'''
#引入
a=10
def func():
a=20 #创建局部变量,并没有改变全局变量中的a
func()
print(a) #result:10
# corret:
a=10
def func():
global a #把外面全局变量引入到局部
a=20
func()
print(a)
#26.4.2 nonlocal
#引入
def func1():
a=10
def func2():
global a
a=20
func2()
print(a) #result: 10
func1()
'''得出:这里的全局与局部不是相对意义上的概念
而是绝对的全局与局部关系'''
corret:
def func1():
a=10
def func2():
nonlocal a #向外找一层,看有没有该变量,有则引入,
a=20 #否则继续向外寻找,直到全局(不包括全局)
func2()
print(a)
func1()
"""注意:
1.两个关键词置于修改值之前
2.声明变量和调用变量居于一条垂直线
3.打印修改值在被修改的级中运行,
与被修改值居于同一垂直线
4.nonlocal不会引入全局变量!!!
"""