在 Python 编程中,函数是代码组织与复用的核心。掌握进阶的函数特性,能让你的代码更高效、更灵活。本文将深入讲解函数的多返回值、多种参数形式以及匿名函数,带你突破函数使用的 “舒适区”。

一、函数的多返回值:一次返回多个结果

在 Python 中,函数可以同时返回多个值,这一特性让数据传递更便捷。

1. 基础用法:多变量返回与接收

我们可以在return语句中直接返回多个值,用逗号分隔即可。接收时,也可以用多个变量按顺序接收。

def test_return():
    return 1, 2, 3

x, y, z = test_return()
print(x)  # 输出:1
print(y)  # 输出:2
print(z)  # 输出:3

2. 类型自由:返回值类型可多样化

返回的多个值类型可以完全不同,比如同时返回整数、字符串、布尔值。

def test_return():
    return 1, "hello", True

x, y, z = test_return()
print(x)    # 输出:1
print(y)    # 输出:hello
print(z)    # 输出:True

二、函数的多种参数形式:灵活适配不同场景

函数的参数传递有多种形式,每种形式都有其适用场景,掌握它们能让你在调用函数时更加灵活。

1. 位置参数:按 “位置” 传参

调用函数时,参数按照函数定义的参数顺序传递,这是最基础的传参方式。

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

# 位置参数调用,顺序必须和函数定义的参数顺序一致
user_info('小明', 20, '男')

2. 关键字参数:按 “名称” 传参

通过参数名=值的形式传参,不需要严格遵守参数定义的顺序,可读性更强。

user_info(name='小王', age=11, gender='女')
# 甚至可以打乱参数顺序
user_info(age=10, gender='女', name='芳芳')

3. 缺省参数:带 “默认值” 的参数

定义函数时给参数指定默认值,调用时可以不传该参数(此时使用默认值)。
注意:缺省参数必须放在所有位置参数的后面,否则会导致语法错误。

def user_info(name, age, gender='男'):
    print(f"姓名是{name},年龄时:{age},性别是:{gender}")

# 不传gender,使用默认值“男”
user_info('小天', 13)  
# 传gender,覆盖默认值
user_info('小天', 13, gender='女')  

4. 不定长参数:处理 “数量不确定” 的参数

当不确定调用函数时会传递多少个参数时,就可以使用不定长参数。
不定长位置参数(args):定义时用args,调用时传递的所有位置参数会被打包成一个元组。

def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")

user_info(1, 2, 3, '小明', '男孩')
# 输出:args参数的类型是:<class 'tuple'>,内容是:(1, 2, 3, '小明', '男孩')

不定长关键字参数(kwargs):定义时用kwargs,调用时传递的所有关键字参数会被打包成一个字典。

def user_info(**kwargs):
    print(f"kwargs参数的类型是:{type(kwargs)},内容是:{kwargs}")

user_info(name='小明', gender='男孩', age=11, addr='北京')
# 输出:kwargs参数的类型是:<class 'dict'>,内容是:{'name': '小明', 'gender': '男孩', 'age': 11, 'addr': '北京'}

三、匿名函数:简洁的 “一行式” 函数

匿名函数(lambda函数)是一种无需定义函数名的简洁函数形式,常用于临时需求或作为参数传递。

1. 函数作为参数传递:函数的 “高阶用法”

我们可以将函数本身作为参数传递给另一个函数,这是 “函数式编程” 的常见技巧。

def test_func(compute):
    result = compute(1, 2)
    print(f"compute参数的类型是:{type(compute)}")
    print(f"计算结果是:{result}")

def compute(x, y):
    return x + y

test_func(compute)
# 输出:compute参数的类型是:<class 'function'>
# 输出:计算结果是:3

2. lambda匿名函数:一行定义函数

lambda函数的语法为:lambda 传入参数: 函数体(一行代码),它没有函数名,常用于临时场景。

def test_func(compute):
    result = compute(1, 2)
    print(f"结果是:{result}")

# 用lambda代替compute函数,实现x+y的逻辑
test_func(lambda x, y: x + y)
# 输出:结果是:3

你还可以用lambda实现更复杂的逻辑(只要函数体是一行代码),比如比较大小、处理字符串等

# 求两个数的最大值
max_num = lambda a, b: a if a > b else b
print(max_num(5, 8))  # 输出:8

# 拼接字符串
str_join = lambda s1, s2: s1 + "-" + s2
print(str_join("Hello", "Python"))  # 输出:Hello-Python

总结

本文从多返回值、多种参数形式、匿名函数三个维度,讲解了 Python 函数的进阶用法:
多返回值让函数可以一次传递多个结果;
位置参数、关键字参数、缺省参数、不定长参数的组合,让函数调用灵活适配各种场景;
匿名函数(lambda)则为 “临时函数需求” 提供了简洁的解决方案。
掌握这些进阶知识,你的 Python 函数使用会更加得心应手,代码也会更具专业性和可读性。快去试试这些技巧,让你的函数 “进化” 吧!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐