函数对象:
指的是函数的内存地址可以想一个变量值一样去使用
1.变量值可以被引用
2变量值可以当做参数传给另外一个函数
3.变量值可以当做函数的返回值
4.变量值可以是容器类型的元素
=======================================================
函数的嵌套:
指的是在一个函数里又调用其他函数
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# def max4(a,b,c,d):
# res1=max2(a,b)
# res2=max2(res1,c)
# res3=max2(res2,d)
# return res3
#
# print(max4(1,2,3,4))
============================================================
名称空间与作用域:
名称空间指的是存放名字与值内存地址绑定关系的地方
1.名称空间分为三大类
内置名称空间:存放的是python解释器自带的名字
产生:在python解释器启动时产生
销毁:在python解释器关闭时销毁
全局名称空间:在顶级定义的名字
产生:执行python程序时
销毁:在python程序执行完毕后销毁
局部名称空间:在函数内定义的名字
产生:在函数调用时产生
销毁:在函数调用结束时销毁
三种名称空间的产生先后顺序:内置=》全局=》局部
查找名字的顺序:从当前位置往外一层一层查找
如果当前在局部名称空间: 局部->全局->内置
如果当前在全局名称空间: 全局->内置
2.作用域:
指的是作用范围
全局作用域:
指的是包含内置与全局名称空间的名字
特点:全局有效,全局存活
(在任何位置都能够访问的到,该范围内的名字会伴随程序整个生命周期)
局部作用域:
指的是局部名称空间的名字
特点:临时存活,局部有效
(只能在函数内使用,调用函数时生效,调用结束失效)
!!!作用域关系是在函数定义阶段就已经固定死了,与调用位置无关
===================================================================
必包函数:
闭:指的是该函数是定义已覆盖函数内部的函数
包:该内部函数包含对外层函数名字的引用