【python】函数进阶
一 函数的多个返回值
示例代码
def test1(x, y, z):return x, y, zx, y, z = test1(1, 2, 3) print(f"{x}, {y}, {z}")
这个还是非常好理解的,用一个代码就可以理解了
二 函数的四种传参形式
(1) 位置参数
位置参数是最常用的传参数形式,直接根据位置进行传参,但是需要注意每一个参数的位置的顺序性,不可以瞎排,要不然会传入错误的值进去,因为python里面的参数列表是不规定这个参数的类型的
示例代码
# 1. 位置参数 def test1(name, age, graden):print(f"name:{name}, gae:{age}, graden:{graden}")test1("mike", "11", "boy") test1("11", "mike", "boy")
(2) 关键字参数
这个不需要注意顺序,只需要注意这个赋值的时候不要出错就好了,顺序无所谓
示例代码def test2(name, age, graden):print(f"name:{name}, gae:{age}, graden:{graden}")test2(name = "mike", age = "11", graden = "boy") test2(name = "mike", graden = "boy", age = "11")
(3) 缺省函数
这个是函数的列表里是有默认值的,所以有时候参数的时候不用赋值
示例代码# 3. 缺省函数 def test3(name, age, graden = "boy"):print(f"name:{name}, gae:{age}, graden:{graden}")test3(name = "mike", age = "11") test3(name = "mike", graden = "gril", age = "11")
(4) 不定长函数
示例代码
当只传这几个参数时候,没有key,只有value的时候,直接就是形成一个二元组,缺点是不可以进行更改,此时参数列表只可以加一个*
当传入的是key和value的时候,这个时候参数列表是生成为字典的,这个时候可以根据字典的操作来操作这些形参,在函数进行使用# 3. 不定长函数 # tuple def test4(*age):print(f"gae's type:{type(age)}, {age}")test4("mike", "gril", "11")# dict def test5(**age):print(f"gae's type:{type(age)}, {age}")test5(name = "mike", graden = "gril", age = "11")
三 函数作为参数传递与lambda表达式
(1) 函数作为参数进行传递
示例代码
def test1(compute):number = compute(1, 2)print(number)def compute(x, y):return x + ytest1(compute)
函数作为参数进行传递是传递逻辑,之前的形参传递是传递值,不是逻辑,所以两个虽然结果一样,但是意义完全不一样,这就引出了lambda表达式的用处了
(2) lambda表达式
# lambda表达式基本语法: # lambda 传入参数: 函数体 (一行代码描述函数体) # lambda 为匿名函数,所以只可以使用一次,不可以二次使用def test1(compute):number = compute(1, 2)print(number)test1(lambda x, y: x + y)
需要知道这lambda表达式的使用语法:
lambda 传入参数: 函数体 (一行代码描述函数体)