声明:本博客所有内容总结均来自书籍cookbook,详情可查阅cookbook

一、可接收任意数量参数的函数

def avg(first, *rest): return (first + sum(rest))/(1+len(rest))avg(1, 2, 3, 4, 5)# 关键字参数只能出现在最后,*参数只能出现在最后一个位置参数后,其后的参数强制关键字参数
def fun(*a, **b):
    pass
def a(x, *arg, y):
    pass
 a(1,2,3,4,y=5)

def b(x, *arg, y, *kw):
    pass
b=(1,2,3,y=3,z=1

二、只接受关键字参数的函数

# 将强制关键字参数放到某个*参数后或*后面

   Python cookbook进阶学习-函数

   Python cookbook进阶学习-函数

三、给函数参数增加元信息

帮助使用者理解函数

def add(x: int, y: int)->int: return x+yPython cookbook进阶学习-函数Python cookbook进阶学习-函数

四、返回多个值的函数

可以直接返回一个元组

def fun() return 1,2,3 #逗号生成了元组a=1,2 # a=(1,2)

五、定义有默认参数的函数

1.传递一个None值与不传值是有区别的

2.默认参数的值仅仅在函数定义时赋值一次

3.默认参数的值应该是一个不可变对象,比如None,字符串,数字,True,False,不要像这样写

Python cookbook进阶学习-函数

最好将默认值设置为None,下面这种写法存在问题。其他的对象(如长度为0的元组,字符串等)都会被视为false

Python cookbook进阶学习-函数

可以创建私有对象进行检测

Python cookbook进阶学习-函数

六、定义匿名或内联函数

对于短小的函数可以采用lambda表达式

     Python cookbook进阶学习-函数

七、匿名函数捕获变量值

X是自由变量,运行时绑定值

     Python cookbook进阶学习-函数

可以定义默认参数,捕获到值

x=10a = lambda y,x=x:x+yPython cookbook进阶学习-函数

八、减少可调用对象的参数个数

   partial()可以固定某些参数

Python cookbook进阶学习-函数


九、将单方法的类转换成方法

Python cookbook进阶学习-函数

可以被一个简单的函数代替

Python cookbook进阶学习-函数

十、带额外状态信息的回调函数

Python cookbook进阶学习-函数

十一、访问闭包中定义的变量

编写访问函数

Python cookbook进阶学习-函数

Python cookbook进阶学习-函数


相关文章: