函数进阶
函数进阶
1,命名空间和作用域
内置命名空间
python解释器,一启动时就加在在内存中
全局命名空间
从上到下执行的过程中一次加在到内存里
局部命名空间
就是函数内部的空间,再用的时候
2,作用域
全局作用域
局部作用域
local,global 关键字的用法
nonlocal 只会对局部变量有影响,由邻近到最外层,不会影响全局变量
函数本质(函数名就是内存地址)
def func():
print(123)
func() #函数名就是内存地址
func2 = func #函数名可以赋值
func2()
l = [func,func2] #函数名可以作为容器类型的元素
print(l)
for i in l:
i()
def func():
print(123)
def func3(f):
f()
return f #函数名可以作为返回值
laoda = func3(func) #函数名也可以作为函数的参数
laoda()
函数名的使用
a = 1
def outer():
a = 1
def inner():
a = 2
def inner2():
nonlocal a #nonlocal 对离它最近的上一层找该变量,一直找到局部变量头部,不会找全局变量。全局变量用global。
a += 1
print('inner2 a=%s' %a)
inner2()
print('inner a=%s' %a)
inner()
print('outer a=%s' %a)
print(a)
outer()