间接调用函数
函数名赋值给一个变量,再通过变量名加参数列表的形式间接调用函数
匿名函数
匿名函数是指没有函数名称的、临时使用的微函数。它可以通过lambda表达式来声明,
闭包函数
内层函数引用了外层函数的变量(包括其参数),并且外层函数返回内层函数名,这种函数架构称为闭包。从概念中可以得出,
闭包需要满足的三个条件:
1.内层函数的定义嵌套在外层函数中。
2.内层函数引用外层函数的变量。
3.外层函数返回内层函数名。
装饰器
装饰器的概念:装饰器本质上还是函数,可以让其他函数在不做任何代码修改的前提下增加额外功能。它通常用于有切面需求的场景。一个以函数作为参数并返回一个替换函数的可执行函数。装饰器的本质是一个嵌套函数,外层函数的参数是被修饰的函数,内层函数是一个闭包并在其中增加新功能(装饰器的功能函数)
@符号的应用
使用变量名将装饰器函数与被装饰函数联系起来。此外,还可以通过@符号和装饰器名实现两者的联系
装饰有参数的函数
装饰器除了可以装饰无参数的函数外,还可以装饰有参数的函数
带参数的装饰器----装饰器工厂
装饰器本身也是一个函数,即装饰器本身也可以带参数,此时装饰器需要再多一层内嵌函数
偏函数
函数最重要的一个功能的是复用代码,有时在复用已有函数时,可能需要固定其中的部分参数,除了设置默认值参数外,还可以使用偏函数(用来固定函数调用时部分或全部参数的函数叫偏函数)
常用的内建函数
内建函数是被自动加载的,可以随时调用这些函数,不需要定义,极大地简化了编程
eval()函数:eval()函数用于对动态表达式求值
exec()函数:exec()函数用于动态语句的执行
compile()函数:compile()函数用于将一个字符串编译为字节代码
map()函数:列表和其他序列中的每个元素进行同一个操作并把其结果集合起来,
filter()函数:filter()函数可以对指定序列进行过滤操作
zip()函数:zip()函数用于将一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的迭代对象