1. Python函数与装饰器入门指南
作为一名从2010年开始使用Python的老程序员,我至今记得第一次理解装饰器时那种"顿悟"的快感。函数和装饰器是Python最优雅的特性之一,也是区分Python新手与进阶者的重要标志。今天我们就来彻底搞懂这两个核心概念。
在Python中,函数是一等公民(first-class citizen),这意味着函数可以像普通变量一样被传递、修改和返回。而装饰器则是基于这一特性发展出的语法糖,它允许我们在不修改原函数代码的情况下,为函数添加新功能。理解这两个概念,你就能写出更Pythonic的代码。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Python函数深度解析
2.1 函数定义与调用基础
Python中使用def关键字定义函数,基本语法如下:
python复制def greet(name):
"""这是一个简单的问候函数"""
return f"Hello, {name}!"
这个简单的例子展示了几个关键点:
- 函数定义以
def开始,后接函数名和参数列表 - 冒号表示函数体开始
- 缩进的代码块是函数体
- 可以使用
return返回值(没有return时默认返回None)
调用函数时只需使用函数名加括号:
python复制print(greet("Alice")) # 输出: Hello, Alice!
提示:函数名应该使用小写字母,单词间用下划线分隔,这是PEP 8推荐的命名风格。
2.2 函数参数详解
Python函数的参数处理非常灵活,支持多种参数传递方式:
- 位置参数:最常见的参数传递方式,按顺序匹配
python复制def power(base, exponent):
return base ** exponent
print(power(2, 3)) # 8
- 关键字参数:通过参数名指定值,顺序不重要
python复制print(power(exponent=3, base=2)) # 同样输出8
- 默认参数:为参数提供默认值
python复制def power(base, exponent=2):
return base ** exponent
print(power(3)) # 9,使用默认exponent=2
print(power(3, 3)) # 27
注意:默认参数在函数定义时计算一次,因此要避免使用可变对象(如列表、字典)作为默认值,除非你明确知道自己在做什么。
- 可变参数:处理不确定数量的参数
*args:接收任意数量的位置参数,打包为元组**kwargs:接收任意数量的关键字参数,打包为字典
python复制def print_args(*args, **kwargs):
print("位置参数:", args)
print("关键字参数:", kwargs)
print_args(1, 2, 3, a=4, b=5)
# 输出:
# 位置参数: (1, 2, 3)
# 关键字参数: {'a': 4, 'b': 5}
2.3 函数的高级特性
- 函数作为对象:Python中函数也是对象,可以赋值给变量
python复制def square(x):
return x * x
