1 函数嵌套:
函数内可以调用了其他的函数.
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# def max3(x,y,z):
# res1=max2(x,y)
# res2=max2(res1,z)
# return res2
#
# print(max3(11,199,2))
def f1():
print('f1')
def f2():
print('f2')
def f3():
print('f3')
f3()
f2()
f1()
2 名称空间,存放名字与值绑定关系的地方,调用时生效。一共分为三类。
2.1内置名称空间,print 解释器自带的名字。什么时候都可以使用
2.2全局名称空间,文件级别,顶头写的函数, if while 都是全局,什么时候都是可以使用的。
2.3 局部名称空间,函数内是局部的,参数也是,
内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效
全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效
3加载顺序 名称空间
#加载顺序:内置名称空间-》全局名称空间-》局部名称空间
#查找名字:局部名称空间-》全局名称空间-》内置名称空间
4作用域
#全局作用域:包含的是内置名称空间与全局名称空间的名字,
#特点
#1在任何位置都能够访问的到
#2该范围内的名字会伴随程序整个生命周期
#局部作用域:包含的是局部名称空间的名字
#特点:
#1、只能在函数内使用
#2、调用函数时生效,调用结束失效
5函数对象:
函数在python第一类对象:
5.1 可被引用
def qwe():
print('asdasd')
f=qwe()
print(f)
5.2 可当参数传入
x=1
def func(a):
print(a)
func(x)
def bar():
print('from bar')
def wrapper(func): #func=bar
func() #bar()
wrapper(bar)
5.3 可以当函数的返回值
X=10
def asd():
if X > 2:
print(X)
else:
return (2)
f=asd()
print(f)
5.4 可以当容器的元素。
def qwe():
print('asd')
def asd():
print('asdd')
y=[qwe,asd,]
print(y)
y[0]()
y[1]()
print(y[0](),y[1]())
6 闭包函数
闭指的是定义在函数内部的函数
作用域关系,在函数定义阶段就定义死了,与调用位置无关。
def qwe():
x=2
def asd():
print('thx',x)
def zxc():
print('bnm',x)
return zxc
return asd
qwe()()()