6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)

一、函数多返回值

1、具体实现
def test_return():
    return 1, 2

x, y = test_return()

print(x)
print(y)
  • 输出结果
1
2
2、解析
  • 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号(,)隔开

  • 支持返回不同类型的数据


二、函数多种传参方式

1、位置参数
(1)基本介绍
  • 调用函数时根据函数定义的参数位置来传递参数

  • 注:传递的参数和定义的参数的顺序及个数必须一致

(2)基本使用
def user_info(name, age, gender):
    print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")

user_info("jack", 20, "男")
user_info("mery", 18, "女")
user_info("tom", 25, "男")
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
您的名字是:tom,年龄是:25,性别是:男
2、关键字参数
(1)基本介绍
  • 函数调用时通过“【键】 = 【值】”形式传递参数

  • 关键字函数可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

  • 注:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

(2)基本使用
def user_info(name, age, gender):
    print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")

# 关键字传参
user_info(name = "jack", age = 20, gender = "男")

# 关键字传参,可以不按照固定顺序
user_info(age = 18, name = "mery", gender = "女")

# 可以和位置参数混用,位置参数必须在前,且对应参数位置
user_info("tom", age = 25, gender = "男")
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
您的名字是:tom,年龄是:25,性别是:男
3、缺省参数
(1)基本介绍
  • 缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值

  • 当调用函数时没有传递参数时,就会使用默认是用缺省参数对应的值

  • 注:所有位置参数必须出现在默认参数前,包括函数定义和调用

(2)基本使用
def user_info(name, age, gender, vipLevel = 0):
    print(f"您的名字是:{name},年龄是:{age},性别是:{gender},vip 等级是:{vipLevel}")

user_info("jack", 20, "男")
user_info("mery", 18, "女", 1)
user_info("tom", 25, "男", 2)
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男,vip 等级是:0
您的名字是:mery,年龄是:18,性别是:女,vip 等级是:1
您的名字是:tom,年龄是:25,性别是:男,vip 等级是:2
4、不定长参数
(1)基本介绍
  • 不定长参数也叫可变参数. 用于不确定调用的时会传递多少个参数(不传参)的场景

  • 不定长参数的类型有位置传递和关键字传递

类型说明
位置传递所有参数都会被 args 变量收集,同时根据传进参数的位置合并为一个元组
不定长传递参数是“【键】 = 【值】”形式的情况下, 所有的键值对都会被 kwargs 变量收集, 同时组成字典
(2)基本使用
print("不定长参数 - 位置传递 ------------------------------")

def get_Info1(*args):
    print(args, type(args))

get_Info1("tom")
get_Info1("jack", 18)

print(" 不定长参数 - 关键字传递 ------------------------------")

def get_Info2(**kwargs):
    print(kwargs, type(kwargs))

get_Info2(name = "mery")
get_Info2(name = "jerry", age = 20)
  • 输出结果
不定长参数 - 位置传递 ------------------------------
('tom',) <class 'tuple'>
('jack', 18) <class 'tuple'>
 不定长参数 - 关键字传递 ------------------------------
{'name': 'mery'} <class 'dict'>
{'name': 'jerry', 'age': 20} <class 'dict'>

三、匿名函数

1、函数作为参数传递
(1)基本介绍
  • 在前面的函数学习中,我们一直使用的函数,都是接受数据作为参数传入,有:数字、字符串、列表、元组、字典等

  • 其实,函数本身也可以作为参数传入另一个函数内

(2)具体实现
def test_func(compute):
    result = compute(10, 20)
    print(result)

def compute1(num1, num2):
    return num1 + num2
test_func(compute1)

def compute1(num1, num2):
    return num1 * num2
test_func(compute1)
  • 输出结果
30
200
(3)解析
  1. test_func 函数需要一个函数作为参数传入,这个传入的函数需要接收两个数字进行计算,计算逻辑由这个被传入函数决定

  2. compute1 / compute2 函数接收两个数字对其进行计算,compute 函数作为参数,传递给 test_func 函数

  3. 在 test_func 函数内部,由传入的 compute 函数,完成对数字的计算操作

(4)小节
  • 将函数作为参数传入的作用在于传入计算逻辑,而非传入数据
2、lambda 匿名函数
(1)基本介绍
函数的定义说明
def 关键字可以定义带有名称的函数,有名称的函数,可以基于名称重复使用
lambda 关键字可以定义匿名函数(无名称),匿名函数,只可临时使用一次
(2)匿名函数的定义
lambda 【传入参数】:【函数体(一行代码)】
  • lambda 是关键字,表示定义匿名函数

  • 传入参数表示匿名函数的形参,如:num1、num2,表示接收两个形参

  • 函数体,就是函数的执行逻辑,只能写一行,无法写多行代码

(3)基本使用
def test_func(compute):
    result = compute(20, 30)
    print(result)

# 通过 lambda 关键字,传入一个一次性使用的 lambda 匿名函数
test_func(lambda num1, num2: num1 + num2)
test_func(lambda num1, num2: num1 - num2)
  • 输出结果
50
-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值