python学习笔记----函数进阶(七)

一、函数多个返回值

def test_return():
    x = 1
    y = "hello"
    z = True
    return x, y, z

a, b, c = test_return()

print(a)
print(b)
print(c)


二、函数多种传参方式

2.1 函数参数种类

根据使用方式上的不同,函数有4种常见参数的使用方式:

  • 位置参数
  • 关键字参数
  • 缺省参数
  • 不定长参数

2.2 位置参数

  • 位置参数:调用函数时,根据函数定义的参数位置来传递传输
  • 传递的参数和定义的参数的顺序个数必须一致

示例:

def user_info(name, age, gender):
    print(f"名字:{name},年龄:{age},性别:{gender}")

user_info("Tom", 20, "男")


2.3 关键字参数

  • 关键字参数:函数调用时通过键 = 值 形式传递采纳数
  • 作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。
def user_info(name, age, gender):
    print(f"名字:{name},年龄:{age},性别:{gender}")

# 关键字传参
# 可以不按照固定顺序
user_info(age = 20, name = "小明", gender = "男")

# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("小明", gender = "男", age = 20)

2.4 缺省参数

  • 缺省参数:缺省参数(也称为默认参数)是函数定义中为参数指定的默认值。当调用函数时,如果没有为具有默认值的参数提供实际的参数值,那么将自动使用这个默认值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
  • 作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值
def user_info(name, age, gender = "男"):
    print(f"名字:{name},年龄:{age},性别:{gender}")


user_info("小天", 20)   # 名字:小天,年龄:20,性别:男

2.5 不定长参数

  • 不定长参数:不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
  • 作用:当调用函数时不确定参数个数时,可以使用不定长参数

2.5.1 不定长参数—位置传递

  • 用途:*args 用于收集额外的位置参数(那些没有被命名的参数),这些参数被封装成一个元组。
  • 定义方式:在参数名前加一个星号 * 来定义,如 *args

示例:

def user_info(*args):
    print(args)

user_info(1, 2, 3, "小明")    # (1, 2, 3, '小明')

2.5.2 不定长参数—关键字传递

  • 用途:**kwargs 用于收集那些关键字参数,这些参数没有在函数定义中直接命名。这些参数被封装成一个字典。
  • 定义方式:在参数名前加两个星号 ** 来定义,如 **kwargs
def user_info(**kwargs):
    print(kwargs)

user_info(name = "小王", age = 11, gender = "男")    #{'name': '小王', 'age': 11, 'gender': '男'}


三、匿名函数

3.1 函数作为参数传递

场景描述:
假设我们正在编写一个购物应用,需要根据不同的促销策略来计算商品的最终价格。我们可以定义几种不同的促销计算函数,然后将这些函数作为参数传递给另一个函数,这个函数负责应用这些促销策略来显示最终价格。

def no_discount(price):
    """不打折,返回原价"""
    return price

def ten_percent_discount(price):
    """打九折"""
    return price * 0.9

def twenty_percent_discount(price):
    """打八折"""
    return price * 0.8

# 主函数
def apply_discount(price, discount_function):
    """应用折扣策略计算最终价格"""
    final_price = discount_function(price)
    print(f"经过促销策略处理后的价格为:¥{final_price:.2f}")


# 商品原价
original_price = 100

# 不使用折扣
apply_discount(original_price, no_discount)

# 使用10%折扣
apply_discount(original_price, ten_percent_discount)

# 使用20%折扣
apply_discount(original_price, twenty_percent_discount)

  • 通过将函数作为参数传递,我们的 apply_discount 函数变得非常灵活和可重用,它可以与任何符合标准的促销策略函数配合使用。这种设计使得你可以很容易地增加新的促销策略,而无需修改 apply_discount 函数的代码。此外,这种方法也便于测试和维护,因为每个促销策略都是独立的,可以单独测试和修改。

3.2 lambda匿名函数

  • lambda 函数是一种简洁的定义匿名函数的方式。lambda 函数本质上就是一个没有名字的小函数,它们经常用于需要一个函数的场合,但该函数又足够简单以至于不值得单独定义。

语法:lambda 传入参数: 函数体(一行代码)

classify = lambda x: "偶数" if x % 2 == 0 else "奇数"
print(classify(3))  # 输出: 奇数
print(classify(2))  # 输出: 偶数

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值