匿名函数
一般应用于函数的简化或者为了一个功能。
lambda 形式参数 : 表达式
如果函数没有参数,形式参数可以省略。匿名函数执行完后会被立即释放。
函数也是一种数据,函数的类型是FunctionType
系统自带的是BulitFunctionType
form types import FunctionType
f = 函数名
f 具有和函数和abs一样的功能。
偏函数:根据场景重置参数参数的默认值。
闭包
函数内部声明了另外一个函数
def out():
name= 'xaioming'
print('外部函数')
def inner():
print('外部函数')
inner()
out()
nolocal:内部函数想要修改外部函数中局部变量,需要对变量进行nolocal修饰。
def outter(a):
num =100
def chang_num():
nolocal num
num =300
change_num()
print(num) #300
outter(10)
locals:获得函数中所有局部变量。
globals:获取所有的全局变量
name__系统设置的全局变量 记录的是当前模块名 如果当前模块是被主动运行的模块值是__main
if __name__ == '__main__':
print('程序入口')
装饰器
外层函数的返回值是内层函数
def out(接受被装饰的数据):
def inner():
装饰
return inner
@out @语法糖
def intter():
print(...)
eg:
def get_time(func): func接受的是被装饰的功能
def inner(*args): 通过inner函数()将参数传递给func
import time
start_time = time.time()
res = func(*args) 执行要装饰的东西
end_time = time.time()
return(res) 返回未装饰的结果
return inner 返回装饰好的结果
@get_time
def nine_table(row): 参数传递
for i in range(1,row):
for j in range(1,i + 1):
print(f'{i}*{j}={i*j}',end='\t')
print()
nine_table(5)
对指定功能@装饰器时的外部函数时:这个时候外部函数执行了 并且把被修饰的函数赋值给func = nine_table 外部函数执行完 将内部函数返回 解释器还是使用nine_table = inner {nine_table的值变化了}再执行nine_table的时候 执行inner了 修饰的全部内容全部加在inner里。
添加装饰器及其流程
添加的时候是从离其本质最近的那个开始依次添加。
执行的时候,从离其本质最远的那个开始执行。
偏函数
根据场景 重置函数的参数的默认值
1、自定义函数
2、借助funtools模块下的功能
from funtools import partial
cus_int = partial(int,base=10)
res = cus_int('01230332')
print(res)