Python函数的详细讲解

在Python中,函数是一段可重复使用的代码块,用于执行特定任务它通过名称调用可以接收输入参数并返回结果。以下是Python函数的详细讲解:


一、函数的定义与调用

1. 基本语法

使用 def 关键字定义函数:

def 函数名(参数列表):
    """文档字符串(可选)"""
    代码块
    return 返回值
2. 示例
def greet(name):
    """向用户问好"""
    print(f"Hello, {name}!")

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

二、参数类型

1. 位置参数(Positional Arguments)

参数按顺序传递:

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

print(add(3, 5))  # 输出:8
2. 默认参数(Default Arguments)

为参数指定默认值:

def power(base, exponent=2):
    return base ** exponent

print(power(3))     # 输出9(3^2)
print(power(3, 3))  # 输出27(3^3)
3. 可变参数(*args 和 **kwargs)
  • *args:接收任意数量的位置参数(打包为元组)
  • **kwargs:接收任意数量的关键字参数(打包为字典)
def print_args(*args, **kwargs):
    print("位置参数:", args)
    print("关键字参数:", kwargs)

print_args(1, 2, name="Alice", age=25)
# 输出:
# 位置参数: (1, 2)
# 关键字参数: {'name': 'Alice', 'age': 25}
4. 强制关键字参数(Python 3+)

使用 * 分隔符强制后续参数为关键字参数:

def person_info(name, *, age, city):
    print(f"{name}, {age}岁,来自{city}")

person_info("Bob", age=30, city="北京")  # 正确
person_info("Bob", 30, "北京")          # 报错

三、返回值

  • 使用 return 返回值,可返回多个值(实际返回元组)
  • 没有 returnreturn 后无值则返回 None
def min_max(numbers):
    return min(numbers), max(numbers)

result = min_max([3, 1, 4])
print(result)  # 输出 (1, 4)

四、变量作用域

  • 局部变量:函数内定义的变量(仅在函数内有效)
  • 全局变量:函数外定义的变量(通过 global 关键字在函数内修改)
x = 10  # 全局变量

def modify():
    global x
    x = 20
    y = 5  # 局部变量

modify()
print(x)  # 输出20
print(y)  # 报错:y未定义

五、Lambda 函数

匿名函数,适合简单操作:

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

# 常用于排序等场景
points = [(1, 2), (3, 1), (2, 5)]
points.sort(key=lambda p: p[1])  # 按第二个元素排序

六、高级特性

1. 递归函数

函数调用自身:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))  # 输出120
2. 闭包(Closure)

函数内部定义函数,并捕获外部变量:

def make_adder(x):
    def adder(y):
        return x + y
    return adder

add5 = make_adder(5)
print(add5(3))  # 输出8
3. 装饰器(Decorator)

修改其他函数功能的工具:

def timer(func):
    def wrapper(*args, **kwargs):
        import time
        start = time.time()
        result = func(*args, **kwargs)
        print(f"耗时:{time.time()-start:.2f}秒")
        return result
    return wrapper

@timer
def long_task():
    import time
    time.sleep(2)

long_task()  # 输出:耗时:2.00秒

七、错误处理

在函数中处理异常:

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return "除数不能为0"

print(divide(10, 2))  # 输出5.0
print(divide(10, 0))  # 输出"除数不能为0"

八、文档字符串(Docstring)

使用三引号编写函数说明:

def add(a, b):
    """返回两个数的和
    
    Args:
        a (int/float): 第一个数
        b (int/float): 第二个数
    
    Returns:
        int/float: a和b的和
    """
    return a + b

help(add)  # 查看文档

总结

Python函数的特点:

  • 提高代码复用性
  • 模块化编程
  • 支持多种参数传递方式
  • 支持高阶函数和函数式编程
  • 通过装饰器灵活扩展功能

通过合理使用函数,可以让代码更简洁、更易维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值