5.1 定义与调用
函数的作用:能够将复杂的程序逻辑分解为可重复使用的模块。
业务→业务逻辑→程序逻辑
语法:
示例:
5.2 函数名
命名规则
1、可以由字母、数字和下划线组成
2、不能以数字开头
3、不能是 Python 中的关键字(如 if
、for
、while
等)
合法函数名示例
不合法函数名示例
函数最佳命名规则
1、使用小写字母和下划线,函数名应全部使用小写字母,并使用下划线 (_
) 分隔单词。例如,add_numbers
2、简洁但具有描述性,函数名应该尽可能简短,但也要足够描述其功能。例如,get_total
比 gt
更好
3、使用动词,函数名通常以动词开头,因为它表示一个动作。例如,read_file
, send_email
4、使用名词,如果函数用于获取某些信息,可以使用名词。例如,get_list
, fetch_data
5、使用前缀或后缀,使用前缀或后缀可以帮助区分不同类型的函数。例如,is_valid
表示一个布尔检查函数,get_
通常用于获取信息
6、避免使用数字,尽量不要在函数名中使用数字,除非它们有特殊意义。例如,process_data_v2
可能表示这是数据处理函数的第二个版本
最佳函数命名示例
5.3 函数参数
在 Python 函数中,函数可以没有参数,也可以有参数。如果有参数,函数参数是用来传递数据给函数的变量。根据不同的需求,Python 支持多种类型的参数,包括位置参数、关键字参数、默认值参数、不定长参数等。
5.3.1 位置参数
位置参数是按照顺序来传递给函数的。
5.3.2 关键字参数
关键字参数允许你在调用函数时通过参数名指定参数值,这样就不必关心参数的实际位置了。关键字参数可以在任何位置使用,并且可以与位置参数混合使用。
当位置参数和关键字参数混合使用时,位置参数必须出现在关键字参数之前
5.3.3 默认值参数
默认值参数是在定义函数时为参数指定一个默认值。如果调用函数时没有提供这个参数的值,那么就会使用默认值。
5.3.4 不定长参数
不定长参数允许函数接受不定数量的位置参数或关键字参数。
*不定长位置参数 (args)
当参数列表前面加上星号 (*) 时,可以接收任意数量的位置参数。
**不定长关键字参数(\kwargs)
当参数列表前面加上两个星号 (**) 时,可以接收任意数量的关键字参数。
5.3.5 参数组合
一个函数的参数可以有位置参数、默认值参数、不定长位置参数、不定长关键字参数的组合。如果有参数组合,其函数定义时,参数从左到右的顺序是:位置参数、默认值参数、不定长位置参数、不定长关键字参数。
5.4 函数返回值
1、返回值,就是函数执行完毕,返回给调用者的结果。如果函数没有显式地返回任何值,则通常返回None
2、函数需要显示地返回返回值,用关键字return
3、函数内可以有多个return,碰到第一个return关键字就结束了函数的调用
4、在Python中,可以返回一个值,或用元组的方式返回多个值
返回一个值的示例
返回多个值的示例
5.5 作用域
作用域是指变量在程序中的可见性范围。
1、局部作用域:
- 在函数内部定义的变量具有局部作用域,只能在该函数内部访问。
- 当函数调用结束时,局部变量的作用域也随之结束。
2、全局作用域:
- 在函数外部定义的变量具有全局作用域,可以在整个程序中访问。
- 全局变量在程序执行开始时创建,在程序结束时销毁。
3、封闭作用域:
- 当一个函数内部定义了另一个函数时,内部函数可以访问外部函数的变量(局部变量)。
- 外部函数的变量(局部变量)对于内部函数来说处于封闭作用域。
4、内置作用域:
- Python 提供了一系列内置函数和常量,如
print()
、type()
、input()
等,它们在所有作用域中都是可用的。
内层使用外层变量
原则是:内层可以使用外层,外层使用不了内层
内层修改外层变量
函数内部修改全局变量,该全局变量需要在函数内部用global
关键字声明
内层函数修改外层函数的变量,该外层函数的局部变量在内层函数中用nonlocal
关键字声明
外层不直接使用内层的变量,这样子破坏了函数的封装性
5.6 函数的嵌套
在 Python 中,函数的嵌套是指在一个函数内部定义另一个函数。这样的设计可以用来创建更加复杂的功能组合,同时保持代码的整洁和模块化。
简单嵌套
返回内部函数
嵌套的应用
5.7 匿名函数
在 Python 中,匿名函数也称为 lambda 函数。它是一种简洁的方式来定义一个小型的、一次性使用的函数。
匿名函数的语法:
说明:
- 参数:可以是一个或多个参数,多个参数之间用逗号分隔
- 表达式:是一个单一的表达式,表达式的结果作为函数的结果返回
示例:
5.8 文档字符串
文档字符串是放在函数、类或模块的第一个逻辑行上的字符串,用于描述该对象的用途、行为或用法。__doc__
属性可以用来获取这些文档字符串的内容。
示例:
5.9 内置函数
Python 中提供了大量的内置函数,这些函数可以直接在程序中使用。
5.9.1 获取内置函数帮助信息
方式一:官方手册地址: https://docs.python.org/3/library/functions.html
方式二:函数名.__doc__
方式三:help(函数名)
......