Python 3 函数详解:从基础到高阶应用

函数是Python编程的核心组成部分,它允许开发者将代码封装为可重复调用的模块,从而提高代码的可读性、复用性和可维护性。本文将系统讲解Python 3中函数的定义、参数传递、作用域及高阶用法,并辅以实例代码帮助理解。

一、函数的定义与调用

1. 基本语法

使用 def 关键字定义函数,后接函数名和参数列表:

def greet(name):
    """返回问候语(文档字符串)"""
    return f"Hello, {name}!"

print(greet("Alice"))  # 输出:Hello, Alice!

2. 函数调用

通过函数名加括号调用函数,传递所需参数:

result = greet("Bob")
print(result)  # 输出:Hello, Bob!

二、函数参数与返回值

1. 参数类型

  • 位置参数: 按顺序传递参数。

  • 默认参数: 参数可指定默认值(默认值仅计算一次):

    def power(base, exponent=2):
        return base ** exponent
    
    print(power(3))     # 9(使用默认指数2)
    print(power(2, 4))  # 16
    
  • 可变参数: 接收任意数量的位置参数(*args)或关键字参数(**kwargs):

    def sum_all(*numbers):
        return sum(numbers)
    
    print(sum_all(1, 2, 3))  # 6
    

2. 返回值

使用 return 返回结果,可返回多个值(实质为元组):

def min_max(numbers):
    return min(numbers), max(numbers)

low, high = min_max([4, 2, 9, 7])
print(f"Min: {low}, Max: {high}")  # Min: 2, Max: 9

三、变量作用域

  • 局部变量: 函数内定义的变量,仅函数内有效。

  • 全局变量: 函数外定义,需使用 global 声明修改:

    count = 0
    
    def increment():
        global count
        count += 1
    
    increment()
    print(count)  # 1
    

四、匿名函数(Lambda)

适用于简单逻辑,语法为 lambda 参数: 表达式:

square = lambda x: x ** 2
print(square(5))  # 25

# 常用场景:排序
names = ["Alice", "Bob", "Charlie"]
names.sort(key=lambda s: len(s))
print(names)  # ['Bob', 'Alice', 'Charlie']

五、高阶函数与装饰器

1. 高阶函数

函数可作为参数或返回值:

def apply(func, value):
    return func(value)

print(apply(lambda x: x * 2, 10))  # 20

2. 装饰器(Decorator)

用于扩展函数功能,使用 @ 语法糖:

def logger(func):
    def wrapper(*args, **kwargs):
        print(f"调用函数:{func.__name__}")
        return func(*args, **kwargs)
    return wrapper

@logger
def add(a, b):
    return a + b

print(add(3, 5))  # 输出:调用函数:add → 8

六、注意事项

  1. 避免可变默认参数: 默认值在定义时创建,可能导致意外行为。

    # 错误示例
    def append_to(element, lst=[]):
        lst.append(element)
        return lst
    
    # 正确做法:使用None替代
    def append_to(element, lst=None):
        lst = lst or []
        lst.append(element)
        return lst
    
  2. 作用域混淆: 在嵌套函数中修改外部变量需使用 nonlocal

  3. 类型提示(Python 3.5+): 提高代码可读性:

    def greeting(name: str) -> str:
        return f"Hello, {name}"
    

七、总结

函数是Python程序设计的基石,掌握其用法能大幅提升代码质量。从基础参数传递到高阶装饰器应用,理解函数的每个细节将助您编写更高效、灵活的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾忆4377

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值