名称空间:
内置名称空间: 在打开pytharm是加载
全局名称空间: 在运行py文件是加载
局部名称空间(临时名称空间) :在py文件中调用时加载
def func(): ----->函数定义
pass ------->函数体
func()------------->函数调用
函数定义时:内存中只储存与函数名的对应关系,函数体的内容不储存
函数调用时:才执行函数体的内容,创建临时空间,随着函数执行结束,内存中的临时名称空间里面的内容也清空
作用域:
全局作用域:内置名称空间里的内容+全局名称空间里的内容
局部作用域:局部名称空间
取值顺序:
局部--->全局--->内置 ,单向取值,不可逆.
a=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
加载顺序:
内置名称空间
全局名称空间
局部名称空间
函数的嵌套:
看到调用就执行
global 和 nonlocal(当数据类型是不可变的时候需要申明,但是当数据类型是列表的时候,可以直接用append往列表添加数据,同时直接引起全局变量的改变)
global:申明函数内的元素可以作为全局变量 (函数可以直接引用全局变量,没有global不能改变全局变量)
nonlocal:申明子级函数可以改变父级函数的变量 ,但nonlocal不能改变全局变量(子级函数可以直接引用父级函数的变量,没有nonlocal不能改变父级函数的变量)
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)
原文地址:https://www.cnblogs.com/jiandanxie/p/9536468.html
时间: 2024-11-06 03:36:04