Python基础入门
第七章:
7.函数
7.1 函数多返回值
按照返回值顺序,写对应顺序的多个变量接收,变量之间用逗号分隔,支持不同数据类型return
def test_return():return 1,"hello", Truex, y, z = test_return()
print(x) # 1
print(y) # hello
print(z) # True
7.2 函数多种传参方式
参数种类:
-
位置参数
-
关键字参数
-
缺省参数
-
不定长参数
7.2.1 位置参数
概念:调用函数时根据函数定义的参数位置来进行传递参数。
def Student(name, sex, age):print(f"我的名字是{name},性别是{sex},今年{age}岁") # 我的名字是小明,性别是男,今年18岁
Student("小明", "男", 18)
补充:传递的参数和定义的参数顺序及个数需相同。
7.2.2 关键字参数
概念:函数调用时通过‘键=值’形式传递参数。
作用:让函数更加清晰、易使用,清除了参数的顺序需求。
def Student(name, sex, age):print(f"我的名字是{name},性别是{sex},今年{age}岁")
Student(name = "小明", age = 20, sex = "男")
Student(sex = "女", age = 18, name = "小红")
Student( "小李", age = 19, sex = "男")
补充:函数调用时,如有位置参数,位置参数须在关键字参数前,但关键字参数之间不分先后顺序。
7.2.3 缺省参数
概念:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,函数调用时可不传该默认参数的值,所有位置参数必须出现在默认参数前,包括函数定义以及调用。
作用:函数调用时没传递参数,就会使用默认值用缺省参数对应的值。
补充:函数调用时,如果为缺省参数传值则修改默认参数值,否则使用该默认值。
7.2.4 不定长参数
概念:不定长参数也叫可变参数,用于不确定调用时会传递多少个参数(可不传参)的场景。
作用:函数调用时不确定参数个数时,可用不定长参数
类型:
-
位置传递
-
关键字传递
位置传递
def Student(*args):print(args)
Student("小明", "211515", 20) # ('小明', '211515', 20)
Student("小红", 18) # ('小红', 18)
补充:传进的所有参数都会被args变量收集,其会根据传进参数的位置合并成一个元组,args是元组类型,这就是位置传递。
关键字传递
def Student(**kwargs):print(kwargs) # {'name': '小明', 'sex': '男', 'age': 18}
Student(name="小明", sex="男", age=18)
补充:参数是‘键=值’形式的形式情况下,所有的‘键=值’都会被kwargs接受,会根据‘键=值’组成字典。
7.3 匿名函数
7.3.1 函数作为参数传递
作用:传入计算逻辑,并非传入数据。
# 定义一个函数,接收另一个函数作为传入参数
def test(calculate):ret = calculate(10, 20)print(ret)# 定义一个函数,作为参数传入另一个函数
def calculate(x, y):return x + y;# 调用并传入参数
test(calculate) # 30
这是种计算逻辑的传递,并非数据的传递。不仅是相加、相除、等任何逻辑都可自行定义并作为函数传入。
7.3.2 Lambda匿名函数
函数定义:
-
def关键字,可定义带有名称的函数
-
lamda关键字,可定义匿名函数(无名称)
有名称的函数,可基于名称重复使用。
无名称的匿名函数,只可临时使用一次。
语法结构:lamba 传入参数:函数体(一行代码)
-
lamba为关键字,表示定义匿名函数
-
传入参数表示匿名参数的形式参数
-
函数体为函数的执行逻辑,只能写一行代码,无法写多行。
# 定义一个函数,接收其他函数输入
def test(calculate):ret = calculate(10, 20)print(ret)# 通过lambda匿名函数的形式,将匿名函数作为参数传入
为参数传入
test(lambda x, y: x + y) # 30
下一章:Python基础入门 — 6.数据容器