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
关键特性总结
特性 | 说明 |
---|---|
可重用性 | 避免重复代码 |
模块化 | 将复杂任务分解为小函数 |
参数灵活 | 支持多种参数传递方式 |
作用域隔离 | 局部变量不影响全局环境 |
一等公民 | 函数可作为参数传递、赋值给变量或作为返回值 |
掌握这些概念,能显著提升代码的清晰度和维护性!