函数名:
1、直接打印函数名,打印的是函数名内存地址
def func(): pass print(func) #输出:<function func at 0x00000021BB452E18>
2、函数名可以赋值给其他变量
def func(): print(666) f = func f() # def #输出:666
3、函数名可以当作容器类的元素
def func1(): print(11) def func2(): print(22) def func3(): print(33) li = [func1(),func2(),func3()] #输出:11 22 33
4、函数名可以当作函数的参数
def func1(): print(111) def func2(a): #执行函数,把func1传入。此时 a= func1 a() # func1() func2(func1) #输出:111
5、函数名可以作为函数的返回值
def func2(): print(222) def func3(x): #2 x = func2 return x #3 返回 func2 ret = func3(func2) #1 ret() # ret = func2 #输出:222
闭包:
内层函数对外层函数(非全局变量)的引用
闭包用处:如果说,内层函数是闭包,python内部有个机制,遇到闭包会在内存中开辟哟个内存空间,不会关闭(不是全局变量,但不关闭)
def func(): a = 1 def func2(): print(a) #这个a是在上层函数调用过来的 func2() func() #输出:a
闭包检测:
def func(): a = 1 def func2(): print(a) func2() print(func2.__closure__) #检查是否是闭包,如果打印None就不是,如果打印的有cell,就是闭包 func()
如何执行函数内层的函数:
① 就在内部函数中先执行本函数
②返回函数内层函数名,再加()
引用 import time
time.time() 19**年到现在的时间
time.sleep(0.1)停顿 0.1 是秒
装饰器:
在不改变原函数基础上,给函数添加功能