Python 函数
函数是一段用来封装 encapsulate 任务的实用代码,可以将程序拆分为更小的部分(基于功能为单位),使代码更容易编写、阅读和重用。
Announce
封装是指用一个简单的命令执行一系列步骤的方式。
定义函数
函数由函数头部和函数主体构成
python
def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2
函数头部
函数第一行为函数头部,包括:
- 关键字
def作为开始,表示进行函数定义 - 函数名称(一个单词,需遵循变量命名规则)
- 函数名后紧跟括号
() - 括号
()内包含形参(或实参、无参数为空也可以),多个形参以逗号,分隔;可以为形参提供默认值(在调用函数时,若用户未向形参指定值就会引用默认值执行代码) - 以冒号
:结束头部
函数主体
函数执行操作的部分,在头部下以缩进的形式存在
- 形参可在主体中使用
- 在主体中创建的变量只能在主体中使用(即在函数主体内创建的变量 作用域 只能是函数主体部分)
- 函数最终可使用关键字
return返回 特定的执行结果,也可以不返回(则默认返回None)。注意print()函数虽然会将结果输出于屏幕上,但是其返回为None
返回值
返回语句 return 接受一个值(一般是函数的局部变量值),并将其返回到调用函数的位置。
- 一般将调用的函数通过赋值符号将返回值传递给另一个变量,以便后续使用函数输出的结果
- 当函数执行返回语句后,函数终止。因此设置多个返回语句一般是无效代码,一般选择第一个运行的返回语句的结果作为返回值
python
def function(parameter):
return some_value
Tip
当一个函数没有 return 语句时,则其返回值默认为 None
文档字符串 docstrings
文档字符串是一种注释,用于解释函数的作用以及使用方式。
格式:
- 位于函数头部下一行
- 以三个引号
"""开始,并在最后(或另起一行)以三个引号"""结束 - 第一行简要解释了函数的作用
- 需要更长的句子来解释函数,可以在一行添加更多信息。可以对函数的参数进行了解释(描述了每个参数的作用和类型);也可以对函数输出进行说明。
函数命名规范
- 仅使用普通字母(小写)、数字和下划线,且需要以字母和下划线开头
- 不能使用 Python 的保留字或内置标识符
- 命名尽量用小写,方式以snake case,即使用下划线连接单词,使用有助于了解函数功能作用的描述性名称
- 确保名称里没有空格
调用函数
通过函数名和添加指定的参数即可调用函数
指定参数可通过两种方式:
- 按照参数顺序依次给出值
- 使用 形参名称 和 赋值符号
=赋值(这种方式可不考虑形参的顺序)
python
cylinder_volume(10, 3)
Lambda表达式
使用 Lambda 表达式创建匿名函数(即没有名称的函数),lambda 表达式非常适合快速创建在代码中以后不会用到的函数。
尤其对高阶函数或将其他函数作为参数的函数
python
def multiply(x, y):
return x * y
使用 Lambda 表达式(简写形式):
python
double = lambda x, y: x * y
Lambda 函数创建
- 以关键字
lambda开始 - 关键字后为该匿名函数的一个或多个参数(用逗号
,分隔),不需要小括号()括起来 - 冒号
:分隔形参和函数主体部分 - 函数主体部分适合于简单的语句,是被评估并在该函数中返回的表达式(类似于
return语句)