Python函数全解析

Python 函数详解

函数是 Python 编程的核心,用于封装可重用的代码块。以下是函数的全面解析:


1. 函数定义

使用 def 关键字定义函数:

python 复制代码
def greet(name):  # name 是参数
    """打印问候语(文档字符串)"""
    print(f"Hello, {name}!")

2. 函数调用

通过函数名和参数调用:

python 复制代码
greet("Alice")  # 输出: Hello, Alice!

3. 参数类型
类型 说明 示例
位置参数 按顺序传递 func(a, b)
关键字参数 指定参数名传递 func(b=2, a=1)
默认参数 定义时指定默认值 def func(a=0):
可变参数 接收任意数量参数 def func(*args):
关键字可变参数 接收任意键值对 def func(**kwargs):

4. 返回值

return 返回结果(默认返回 None):

python 复制代码
def add(a, b):
    return a + b

result = add(3, 5)  # result = 8

5. 作用域
  • 局部变量:函数内定义的变量(仅在函数内有效)
  • 全局变量 :函数外定义的变量(需用 global 在函数内修改)
python 复制代码
x = 10  # 全局变量

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

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

6. Lambda 函数

匿名函数,用于简单操作:

python 复制代码
square = lambda x: x ** 2
print(square(4))  # 输出: 16

7. 递归函数

函数调用自身:

python 复制代码
def factorial(n):
    return 1 if n == 0 else n * factorial(n-1)

print(factorial(5))  # 输出: 120

8. 函数注解

添加类型提示(Python 3.5+):

python 复制代码
def multiply(a: int, b: int) -> int:
    return a * b

9. 闭包

内部函数记住外部作用域的变量:

python 复制代码
def outer(x):
    def inner(y):
        return x + y
    return inner

closure = outer(10)
print(closure(5))  # 输出: 15

10. 装饰器

修改函数行为(不改变原函数代码):

python 复制代码
def logger(func):
    def wrapper(*args):
        print(f"调用函数: {func.__name__}")
        return func(*args)
    return wrapper

@logger
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Bob")
# 输出: 
# 调用函数: say_hello
# Hello, Bob!

11. 生成器函数

yield 返回迭代器:

python 复制代码
def count_down(n):
    while n > 0:
        yield n
        n -= 1

for num in count_down(3):
    print(num)  # 输出: 3, 2, 1

关键特性总结
特性 说明
可重用性 避免重复代码
模块化 将复杂任务分解为小函数
参数灵活 支持多种参数传递方式
作用域隔离 局部变量不影响全局环境
一等公民 函数可作为参数传递、赋值给变量或作为返回值

掌握这些概念,能显著提升代码的清晰度和维护性!

相关推荐
从零开始学习人工智能5 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
WWJA王文举6 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
卷无止境6 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha13146 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教7 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
Python私教7 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
卷无止境7 小时前
FastAPI 的Admin面板生态
后端·python
qq_448011168 小时前
C语言中的动态内存分配
c语言·开发语言·php
ctlover8 小时前
Streamlit 框架
python
ι:8 小时前
MATLAB 与 Python 搭建无人机地面站:优势、劣势与选型逻辑
python·matlab·无人机