python基础--函数的命名空间and作用域
函数对象:函数是第一类对象,函数名指向的值是可以被当作参数进行传递的
1、函数名可以被传递
2、函数名可以被当作参数传递给其它函数
3、函数名可以被当作函数的返回值
4、函数名可以被当作容器类型的参数
函数的嵌套调用:在函数的内部调用其它的函数,可以将复杂的逻辑简单化
# 比较输出最大的数 def my_max(x,y): if x > y: return x return y def my_max4(a,b,c,d): res1 = my_max(a,b) res2 = my_max(res1,c) res3 = my_max(res2,d) return res3 print(my_max4(1,2,10,4))
定义:写一个函数,用户可以通过传参的不同控制函数执行不同的功能
名称空间:字面意思是放名字的地方
解释:存放变量与变量值的内存地址的绑定关系的地方,如果要访问一个变量的话,必须先去名称空间中拿到对应的名字才能够访问变量的值。
分类:
内置名称空间:python解释器已经提前给你定义好了的名字(已经存放到内置名称空间中了)
全局名称空间:文件级别的代码
局部名称空间:函数体内创建的名字都属于局部名称空间
生命周期:
内置名称空间:只要python解释器一启动就立刻创建,当解释器关闭的时候内置空间自动销毁
全局名称空间:只要你右键运行py文件,就会自动创建py文件程序运行结束自动销毁
局部名称空间:函数被调用的时候就会自动创建,函数指向结束立即销毁(动态创建动态销毁)
名字的查找顺序:局部-->全局-->内置
函数在定义阶段查找名字的顺序就已经固定了,不会因为函数的调用位置变化而变化
作用域:全局作用域、局部作用域
global:局部修改全局 如果想要修改多个 用逗号隔开
nonlocal:局部修改局部 如果想要修改多个 用逗号隔开