1. Python 函数的基本定义与语法要点
1.1 def 的语法结构
在 Python 中,def 是用来定义函数的关键词。函数定义的基本语法是 def 函数名(参数列表):,随后是缩进的代码块作为函数体。通过这条线路,可以把一组逻辑封装为可重用的单位。函数名 即标识符,参数列表 决定输入的类型与数量,冒号标志着函数体的开始。
一个函数的名称就是它在代码中的标识,参数列表中的变量将在函数调用时被绑定为具体值。缩进 则明确表示代码块的层级与边界,这是 Python 的语法核心之一。

下面给出最简单的示例,调用时传入参数,就能得到一个结果。该示例体现了函数的基本结构和执行流程。
def add(a, b):return a + b# 调用示例
print(add(2, 3)) # 输出 52. 参数、返回值与作用域解析
2.1 参数类型以及默认值
参数是定义函数时的输入,必选参数必须提供,默认值参数给出缺省的输入,提升灵活性与可用性。通过设置默认值,可以让函数在不同调用场景中得到合理的初始状态。
需要注意的是,默认值参数若用可变对象(如列表、字典)作为默认值,可能在多次调用中共享同一个对象。这种情况常被称为“默认值陷阱”,解决办法通常是将默认值设为 None,在函数体内再进行初始化。
除了普通参数,Python 还支持接收任意数量的参数,这通过 *args 和 **kwargs 实现,提升了函数的通用性和扩展性。
def greetings(name, times=1, prefix=None):if prefix:return (prefix + " " + name) * timesreturn (name + "!") * timesprint(greetings("Alice", 2, "Hi")) # Hi AliceHi Alice
print(greetings("Bob")) # Bob!
下面的示例展示了如何处理任意数量的位置参数和关键字参数,强调了 参数解析的灵活性。
def print_args(*args, **kwargs):print("args:", args)print("kwargs:", kwargs)print_args(1, 2, 3, a=4, b=5)
函数的返回值通过 return 语句来实现,局部作用域中的变量在函数执行结束后将被销毁,除非被外部环境通过闭包等方式持有。
def outer():x = "hidden"def inner():return xreturn innerf = outer()
print(f()) # 输出 hidden3. 基于 def 的实际应用场景
3.1 函数式编程与装饰器
在 Python 中,函数被视为一等公民(First-class Citizen),可以作为参数传递、作为返回值返回、或赋值给变量。这种特性推动了 高阶函数 的实现,也为常见的应用模式打下基础,如装饰器、回调、工厂函数等。
装饰器利用 函数作为可调用对象的能力,为其他函数增加行为,而不修改其源码。通过一个接收函数并返回新函数的包装器,可以在执行前后执行额外逻辑。
def decorator(func):def wrapper(*args, **kwargs):print("Before")result = func(*args, **kwargs)print("After")return resultreturn wrapper@decorator
def say_hello(name):print(f"Hello {name}")say_hello("Bob")
另一种常见模式是“工厂函数”,即返回一个依据传入参数定制化的函数。这类用法常用于创建参数化的行为,提升代码复用性与可维护性。
def make_multiplier(n):def multiplier(x):return x * nreturn multiplierdouble = make_multiplier(2)
print(double(5)) # 10
通过上述示例可以看到,def 定义的函数不仅是执行体,也是组合、扩展和动态行为的载体。这些实际场景体现了“从基础语法到实际应用场景”的落地能力。


