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
    

    作者:我命由我12345

    物联沃分享整理
    物联沃-IOTWORD物联网 » 6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)

    发表回复