python学习第十天,名称空间与作用域,函数的嵌套,global 和 nonlocal
2021-07-15 13:05
标签:时空 全局 print 定义 pass class test inner global 名称空间: 内置名称空间: 在打开pytharm是加载 全局名称空间: 在运行py文件是加载 局部名称空间(临时名称空间) :在py文件中调用时加载 def func(): ----->函数定义 pass ------->函数体 func()------------->函数调用 函数定义时:内存中只储存与函数名的对应关系,函数体的内容不储存 函数调用时:才执行函数体的内容,创建临时空间,随着函数执行结束,内存中的临时名称空间里面的内容也清空 作用域: 全局作用域:内置名称空间里的内容+全局名称空间里的内容 局部作用域:局部名称空间 取值顺序: 局部--->全局--->内置 ,单向取值,不可逆. 加载顺序: 内置名称空间 全局名称空间 局部名称空间 函数的嵌套: 看到调用就执行 global 和 nonlocal(当数据类型是不可变的时候需要申明,但是当数据类型是列表的时候,可以直接用append往列表添加数据,同时直接引起全局变量的改变) global:申明函数内的元素可以作为全局变量 (函数可以直接引用全局变量,没有global不能改变全局变量) nonlocal:申明子级函数可以改变父级函数的变量 ,但nonlocal不能改变全局变量(子级函数可以直接引用父级函数的变量,没有nonlocal不能改变父级函数的变量) python学习第十天,名称空间与作用域,函数的嵌套,global 和 nonlocal 标签:时空 全局 print 定义 pass class test inner global 原文地址:https://www.cnblogs.com/jiandanxie/p/9536468.htmla=10
b=20
def test5(a,b):
print(a,b) ---> 20,10
a=3
b=5
print(a,b) ---> 3,5
c = test5(b,a)
print(c) ---------> None
count = 1
def func1():
count += 1 # 会报错 # count = 2 不会报错
print(count)
func1()
def func1():
count = 666
def inner():
print(count)
def func2():
nonlocal count
# global count
count += 1
print(‘func2‘,count)
func2()
print(‘inner‘,count)
inner()
print(‘func1‘,count)
func1()
print(count)
下一篇:python的变量命名及其使用
文章标题:python学习第十天,名称空间与作用域,函数的嵌套,global 和 nonlocal
文章链接:http://soscw.com/essay/105579.html