2.4 函数定义与调用
函数是 Python 编程中的核心概念之一,它允许我们将代码块封装为一个可重用的单元。通过函数,我们可以提高代码的可读性、可维护性和复用性。本节将详细介绍如何定义和调用函数,以及函数的相关特性。
2.4.1 函数的定义
在 Python 中,函数通过 def 关键字定义。函数定义的基本语法如下:
def function_name(parameters):
"""函数文档字符串"""
# 函数体
return value
function_name: 函数的名称,遵循 Python 的命名规则(通常使用小写字母和下划线)。parameters: 函数的参数列表,可以有零个或多个参数。参数是函数接收的输入值。"""函数文档字符串""": 可选的文档字符串,用于描述函数的功能和用法。函数体: 函数的具体实现代码。return: 可选的返回语句,用于返回函数的结果。如果没有return语句,函数默认返回None。
示例:
def greet(name):
"""向指定名称的用户打招呼"""
return f"Hello, {name}!"
2.4.2 函数的调用
定义函数后,可以通过函数名加括号的方式调用函数,并传递相应的参数。例如:
message = greet("Alice")
print(message) # 输出: Hello, Alice!
函数调用时,参数可以是常量、变量或表达式。Python 支持位置参数和关键字参数两种传递方式。
- 位置参数: 按照参数定义的顺序传递值。
- 关键字参数: 通过参数名指定值,顺序可以任意。
示例:
def add(a, b):
return a + b
# 位置参数
result1 = add(3, 5) # 输出: 8
# 关键字参数
result2 = add(b=5, a=3) # 输出: 8
2.4.3 默认参数
Python 允许为函数参数指定默认值。如果调用函数时未传递该参数,则使用默认值。
def power(base, exponent=2):
return base ** exponent
print(power(3)) # 输出: 9 (使用默认的 exponent=2)
print(power(3, 3)) # 输出: 27
2.4.4 可变参数
Python 支持可变数量的参数,可以通过 *args 和 **kwargs 实现。
*args: 用于接收任意数量的位置参数,存储为元组。**kwargs: 用于接收任意数量的关键字参数,存储为字典。
示例:
def print_args(*args, **kwargs):
print("位置参数:", args)
print("关键字参数:", kwargs)
print_args(1, 2, 3, name="Alice", age=25)
# 输出:
# 位置参数: (1, 2, 3)
# 关键字参数: {'name': 'Alice', 'age': 25}
2.4.5 返回值
函数可以通过 return 语句返回一个或多个值。如果返回多个值,Python 会将其打包为元组。
示例:
def min_max(numbers):
return min(numbers), max(numbers)
result = min_max([3, 1, 4, 1, 5, 9])
print(result) # 输出: (1, 9)
2.4.6 Lambda 函数
Lambda 函数是一种匿名函数,通常用于简单的操作。它的语法如下:
lambda parameters: expression
示例:
square = lambda x: x ** 2
print(square(5)) # 输出: 25
2.4.7 函数的作用域
Python 中的变量作用域分为局部作用域和全局作用域。函数内部定义的变量属于局部作用域,函数外部定义的变量属于全局作用域。
- 局部变量: 只能在函数内部访问。
- 全局变量: 可以在整个程序范围内访问。
示例:
x = 10 # 全局变量
def func():
y = 5 # 局部变量
print(x + y)
func() # 输出: 15
如果需要修改全局变量,可以使用 global 关键字。
x = 10
def func():
global x
x = 20
func()
print(x) # 输出: 20
2.4.8 递归函数
递归函数是指在函数内部调用自身的函数。递归常用于解决分治问题,如阶乘、斐波那契数列等。
示例:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 输出: 120
2.4.9 总结
函数是 Python 编程中不可或缺的工具。通过定义和调用函数,我们可以将复杂的逻辑分解为更小的模块,从而提高代码的可读性和可维护性。掌握函数的定义、参数传递、返回值以及作用域等概念,是编写高效 Python 程序的基础。
