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

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

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

相关推荐
love530love5 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
程序喵大人7 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng7 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
wdfk_prog9 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
_Jimmy_9 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
晴空了无痕9 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
用户8356290780519 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
神明不懂浪漫9 小时前
【第五章】Java中的继承与多态
java·开发语言
神州世通10 小时前
解密企业通信安全防线:Avaya Aura 三层安全架构深度解析
开发语言·php
AC赳赳老秦11 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw