Python函数 function
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。以下Python基础函数笔记:
pycharm快捷键
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Ctrl + Alt + M 提取方法
定义
用于封装一个特定的功能,表示一个功能或者行为。
函数是可以重复执行的语句块, 可以重复调用。
作用
提高代码的可重用性和可维护性(代码层次结构更清晰)。
定义函数
语法:
def 函数名(形式参数):
函数体
说明:
def 关键字:全称是define,意为”定义”。
函数名:对函数体中语句的描述,规则与变量名相同。
形式参数:方法定义者要求调用者提供的信息。
函数体:完成该功能的语句。
函数的第一行语句建议使用文档字符串描述函数的功能与参数。
调用函数
语法:函数名(实际参数)
说明:根据形参传递内容。
返回值
定义:
方法定义者告诉调用者的结果。
语法:
return 数据
说明:
return后没有语句,相当于返回 None。
函数体没有return,相当于返回None。
可变/不可变类型在传参时的区别
不可变类型参数有:
数值型(整数,浮点数)
布尔值bool
None 空值
字符串str
元组tuple
可变类型参数有:
列表 list
字典 dict
集合 set
传参说明:
不可变类型的数据传参时,函数内部不会改变原数据的值。
可变类型的数据传参时,函数内部可以改变原数据。
函数参数
实参传递方式argument
位置传参
定义:实参与形参的位置依次对应。
序列传参
定义:实参用*将序列拆解后与形参的位置依次对应。
关键字传参
定义:实参根据形参的名字进行对应。
字典关键字传参
定义:实参用**将字典拆解后与形参的名字进行对应。
作用:配合形参的缺省参数,可以使调用者随意传参。
形参定义方式parameter
缺省形参
语法:
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...):
函数体
说明:
缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
缺省参数可以有0个或多个,甚至全部都有缺省参数。
位置形参
语法:
def 函数名(形参名1, 形参名2, ...):
函数体
命名关键字形参
语法:
def 函数名(*args, 命名关键字形参1, 命名关键字形参2, ...): 函数体
def 函数名(*, 命名关键字形参1, 命名关键字形参2, ...):
函数体
作用:
强制实参使用关键字传参
不定长形参
星号元组形参
语法:
def 函数名(*元组形参名):
函数体
作用:
可以将多个位置实参合并为一个元组
说明:
一般命名为'args'
形参列表中最多只能有一个
双星号字典形参
语法:
def 函数名(**字典形参名):
函数体
作用:
可以将多个关键字实参合并为一个字典
说明:
一般命名为'kwargs'
形参列表中最多只能有一个
参数自左至右的顺序
位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参
作用域LEGB
作用域:变量起作用的范围。
Local局部作用域:函数内部。
Enclosing 外部嵌套作用域 :函数嵌套。
Global全局作用域:模块(.py文件)内部。
Builtin内置模块作用域:builtins.py文件。
变量名的查找规则
由内到外:L -> E -> G -> B
在访问变量时,先查找本地变量,然后是包裹此函数外部的函数内部的变量,之后是全局变量,最后是内置变量。
局部变量
定义在函数内部的变量(形参也是局部变量)
只能在函数内部使用
调用函数时才被创建,函数结束后自动销毁
全局变量
定义在函数外部,模块内部的变量。
在整个模块(py文件)范围内访问(但函数内不能将其直接赋值)。
global 语句
作用:
在函数内部修改全局变量。
在函数内部定义全局变量(全局声明)。
语法:
global 变量1, 变量2, …
说明
在函数内直接为全局变量赋值,视为创建新的局部变量。
不能先声明局部的变量,再用global声明为全局变量。
nonlocal 语句
作用:
在内层函数修改外层嵌套函数内的变量
语法
nonlocal 变量名1,变量名2, ...
说明
在被嵌套的内函数中进行使用