函数的基础概念
函数是pyhton 位了代码最大程度和最小化代码冗余而提供的基本程序结构
函数是一种设计工具,它能让程序员将复杂的系统分解可管理的的部件.
函数用于将相关功能打包并参数化
在python 种可以创建4种函数:
全局函数 :定义在模块中
局部函数 :嵌套 于其他函数中
lambda函数(匿名函数) :表达式
方法: 与特定数据类型关联的函数,并且只能与数据类型关联一起使用
python 提供了很多内置函数
语法:
def functionName(parameters)
suite
相关概念
def 是一个可执行语句
因此可以出现在任何能够使用语句的地方,甚至可以嵌套于其他语句,例如if while 中
def创建了一个对象并将复制给一个变量名(及函数名)
return 用于返回结果对象,其为可选;无return语句的函数自动返回None对象
返回多个值时,彼此使用逗号分隔,且组合为元祖形式返回一个对象
def语句运行之后,可以在程序中通过函数后附加括号进行调用.
函数作用域
python创建、改变或查找变量名都是在名称空间中进行
在代码中变量名被赋值的位置决定了其能被访问到的范围
函数定义了本地作用域,而模块定义了全局作用域
每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文件
每次对行数的调用都会创建一个新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量
所有的变量名都可以归纳为本地、全局或内置的(由_builtin_模块提供)
变量名解析:LEGB原则
变量名引用分三个作用域进行:
首先是本地、之后是函数内、接着是全局,最后是内置.(作用域越小,优先级越高)
注意:
python 闭包
参数匹配模型
默认情况下,参数通过其位置进行传递,从左至右,这意味着,必须精确地传递和函数头部参数一样多的参数
但也可以通过关键字参数、默认参数容器等改变这种机制
位置:从左至右
关键字参数:使用'name = value'的语法通过参数进行匹配
默认参数:定义函数时使用"name=value"的语法直接给变量一个值,从而传入的值可以少于参数个数
可变参数:定义函数时使用*开头的参数,可用于手机任意多基于位置或关键字的参数
可变参数解包:调用函数时,使用*开头的参数,可用于将参数集合打散,从而传递任意多基于位置或关键字的参数.