目录
1.函数的概述
2.返回值
3.参数
4.lambda函数
5.拆包和组包
函数
一.概述
-
作用:模块化编程,代码复用
-
语法:
函数必须先定义后调用
函数的定义与调用
# 函数的定义 def 函数名(形参): """ 说明文档 Ctrl + Q 查看 """ ... return 返回值 # 函数的调用 func1(实参)
-
变量的作用域
- 指的是变量的作用范围
- 针对函数而言,把变量分为全局和局部作用域
- 全局作用域对应的全局变量,局部作用域对应的局部变量
局部变量 全局变量 局部作用域 w/r 使用global声明,列表这种可变类型不需要声明 全局作用域 / w/r
二.返回值
- return后面跟的就是返回值
- 不写return:代表没有返回值(返回值是NONE)
- return 值1, 值2…:代表返回多个值,可以使用元组的形式返回,也可以不写小括号
- return的作用:
- 返回值
- 结束程序:return后面的代码不会执行(类似于break的作用)
三.参数
-
参数分为形参和实参
-
形参指的是函数定义时书写的参数
形参 格式 备注 普通参数 def f1(name): 缺省参数(默认参数) def f1(name=‘张三’): 传参的时候可以修改缺省参数的值 不定长位置参数 def f1(*args): 不定长关键字参数 def f1(**kwargs): 形参混用时书写顺序的问题:
普通参数 -> 不定长位置参数 -> 缺省参数 -> 不定长关键字参数
-
实参指的是函数调用时传递的参数
实参 格式 备注 位置参数 f1(‘张三’) 顺序必须和形参的顺序一一对应 关键字参数 f1(name=‘张三’) 顺序无需对应,但是混用的时候必须在位置参数后书写 不定长位置参数 f1(*元组名) 可以直接按照*元组名的格式传递元组的数据 不定长关键字参数 f1(**字典名) 可以直接按照**字典名的格式传递字典的数据
四.lambda函数
-
一般情况下需要书写函数名,但是也存在一种匿名函数—lambda函数
# 不带参数的 f1 = lambda: print('hello') # 带普通参数的 f2 = lambda a, b: print(a + b) # 带缺省参数的 f3 = lambda b, a=1: print(a + b) # 带不定长位置参数的 f4 = lambda *args: print(args) # 带不定长关键字参数的 f5 = lambda **kwargs: print(kwargs) # 带三目运算符的 f6 = lambda a, b: a if a > b else b
五.拆包和组包
-
交换两个变量,无需引入临时变量,可以直接使用拆包的方式进行
a = 1 b = 2 # 交换a和b的值 a, b = b, a print(a, b)
-
元组的拆包
方式1:常用来获取元组中每个变量的值
# 元组的拆包 t1 = (1, 2, 3) # 方式1 a, b, c = t1 print(a, b, c)
方式2:常用来在函数调用时作为实参进行参数的传递
def f1(*args): ... t1 = (1, 2, 3) f1(*t1)
-
字典的拆包
方式1:用来获取字典每一个键
注意字典的拆包只能把键拆出来,无法获取值
# 字典的拆包 d1 = {'name': '张三', 'age': 22} # 方式1 k1, k2 = d1 print(k1, k2)
方式2:用来在函数调用的时候作为实参进行传参
def f1(**kwargs): ... d1 = {'name': '张三', 'age': 22} f1(**d1)