再说函数
再说函数
函数的引用赋值和参数操作
Python中的函数,本身也是一个对象,常规定义语法的函数,就是将一个函数对象的引用地址赋值给函数名称的变量,通过函数名称的变量调用执行函数
- 声明定义一个函数对象,赋值给了变量show_msg
- 如果函数就是对象,那么函数也是和对象一样可以被赋值
- 函数也可以被当成一个参数传递给其他函数执行
函数的传值操作:设计模式:策略模式
函数的默认调用:偏函数
有一种函数操作,可以让函数的操作执行更加人性化的操作处理
但是偏函数的操作,在一定程度上来说只是一个语法糖,因为python中对于函数参数的处理已经有默认值得操作,完全可以替代偏函数的复杂操作
功能植入:装饰器函数
软件开发原则中,有一项是OCP(open close principle: 开闭原则)
OCP:对软件功能的扩展开放,对软件原来的代码的修改关闭
那么如果在函数中,我们要给一个函数添加功能但是又不允许修改函数的代码
如上述计算函数 calculation(),在计算前后添加日志记录,应该怎么操作呢
- 原始操作
在运行结果前后添加代码, 但这样对于代码的复用性的提升较差
Python提供了一种新的处理方式,可以更加友好的在符合OCP原则的情况下,扩展函数的操作功能
数据扩展:闭包函数
匿名函数
匿名函数,在很多语言中都存在这样一种操作方式
更加广为人知的名称:兰木达表达式[lambda 表达式],它的主要作用是简化函数操作
将简单的处理逻辑封装在一个表达式中,而省去了定义函数的繁杂的操作方式
推导式和生成器有什么区别
生成器和迭代器有什么区别
Is_alive 判断线程是否存活