2Python函数详解(0601)
Posted hanshanxiaoheshang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2Python函数详解(0601)相关的知识,希望对你有一定的参考价值。
函数和过程的区别:函数都有return返回值,在python中,通常都有返回对象
函数:名称空间
一个变量所能够生效的范围,就叫做变量的作用域,这个作用域通常称之为名称空间
变量名解析:LEGB原则
变量名引用分三个作用域进行:首先是本地、之后是函数内、接着是全局,最后是内置
作用域越小,变量的优先级越高
Python闭包:在函数嵌套时,如果直接返回内层函数的话,同时如果内层函数调用了外层函数的变量,内层函数会自动记忆外层函数的变量,这种机制就叫做函数的闭合,也就是所谓的工厂函数
闭包法则:定义在外层函数内,但是却由内层函数引用的变量,在外层函数返回时,如果外层函数直接返回了内层函数作为返回结果,再次调用内层函数可以直接使用外层函数原有的变量,内层函数实现记忆的效果
尽可能不要在函数内部修改传递过来的可变对象,使用对象复制可以避免
参数传递形式
位置参数:从左向右
关键字参数:按关键名称匹配
位置和关键字混用,混用上面两种方式时,所有位置参数,所有的关键字参数
定义函数时使用默认参数:有默认值的参数
混用有默认和无默认值的参数时,无默认值的应该放在前面
调用函数时使用可变参数要求:
使用*:收集位置参数
使用**:收集关键字参数
回顾:
re
search,findall,finditer.sub,subn
function
()
def func_name(arg1,....)
func_suite
python闭包:闭包叫lexical closure
函数中使用yield,会返回一个生成器对象
装饰器:
1.装饰器本身是一个函数 ,用于装饰其他函数
2.功能:增强被装饰函数的功能
装饰器一般接受一个函数对象作为参数,
使用@调用函数
递归:
在函数执行过程中调用自己
递归需要边界条件,递归前进段和递归返回段
协程
函数的设计规范
耦合性
1.通过参数接受输入,已经通过return产生输出以保证函数的独立性
2.尽量减少使用全局变量进行函数间通信
3.不要再函数中修改可变类型的参数
4.避免直接改变定义在另外一个模块中的变量
集合性
1.每个函数都应该有一个单一的、统一的目标
2.每个函数的功能都应该相对简单
练习:
1.将/etc/passwd文件中的每一行都分隔成一个列表
2.将任意文件按用户指定的分隔符把每一行都分隔成一个列表
3.用折叠的方式(reduce)求阶乘
类:将同一种具体物事的共同特性抽象出来的表现
状态和转换这些状态的操作
数据:
变量:就是属性
方法:
函数:操作变量引用的数据的代码
面向对象编程的3原则
封装、集成和多态
class class_name
以上是关于2Python函数详解(0601)的主要内容,如果未能解决你的问题,请参考以下文章