Python函数与模块秘籍:构建可重用代码的艺术
发布时间: 2024-06-17 18:05:05 阅读量: 62 订阅数: 27
![Python函数与模块秘籍:构建可重用代码的艺术](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b9decda53cfc4086b181adfadf420819~tplv-k3u1fbpfcp-watermark.image?)
# 1. Python函数的基础**
**1.1 函数的定义和调用**
在Python中,函数是代码块,用于执行特定任务。函数通过`def`关键字定义,后跟函数名称和括号中的参数列表。函数体包含要执行的代码。要调用函数,只需使用其名称并传递参数(如果需要)。
**示例:**
```python
def greet(name):
"""打印问候语。"""
print(f"你好,{name}!")
greet("小明") # 输出:你好,小明!
```
**1.2 函数参数和返回值**
函数可以接受参数,这些参数在函数体中作为变量使用。函数还可以返回一个值,该值由`return`语句指定。
**示例:**
```python
def sum_numbers(a, b):
"""返回两个数字的和。"""
return a + b
result = sum_numbers(10, 20) # result 为 30
```
# 2.1 函数的装饰器
### 2.1.1 装饰器的原理和应用
装饰器是一种在 Python 中用于修改函数行为的强大工具。它允许在不修改原始函数源代码的情况下向函数添加新功能或更改其行为。装饰器的原理是利用 Python 中的高阶函数特性,即函数可以作为参数传递给其他函数,并且可以返回另一个函数。
装饰器的基本语法如下:
```python
def decorator(func):
# 装饰器函数的逻辑
def wrapper(*args, **kwargs):
# 包装函数的逻辑
return func(*args, **kwargs)
return wrapper
```
要使用装饰器,只需将它作为函数参数应用到要修改的函数上即可。例如:
```python
@decorator
def my_function():
# 函数的原始逻辑
```
### 2.1.2 内置装饰器和自定义装饰器
Python 提供了一些内置的装饰器,用于常见的功能,例如计时、缓存和错误处理。一些常用的内置装饰器包括:
- `@lru_cache`:用于缓存函数调用,以提高性能。
- `@property`:将方法转换为只读属性。
- `@staticmethod`:将方法转换为静态方法,使其不依赖于实例。
除了内置装饰器之外,还可以创建自定义装饰器来满足特定需求。自定义装饰器可以用于添加日志记录、验证参数、处理异常等功能。
### 代码示例
以下是一个自定义装饰器的示例,用于记录函数调用:
```python
import functools
def log_function_call(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print(f"Calling function {func.__name__} with args {args} and kwargs {kwargs}")
result = func(*args, **kwargs)
print(f"Function {func.__name__} returned {result}")
return result
return wrapper
@log_function_call
def add_numbers(a, b):
return a + b
add_numbers(1, 2)
```
**代码逻辑分析:**
* `log_function_call` 装饰器函数接受一个函数 `func` 作为参数。
* `@functools.wraps(func)` 确保包装函数 `wrapper` 继承原始函数 `func` 的元数据(例如名
0
0