python函数用法(三)
1. 错误处理与异常函数
在Python中,可以使用try/except块来捕获和处理异常。异常是程序运行时发生的问题,例如除数为零、文件不存在等。通过捕获异常,你可以优雅地处理这些问题,而不是让程序崩溃。
python复制代码
|
def divide_numbers(a, b): |
|
try: |
|
result = a / b |
|
except ZeroDivisionError: |
|
print("Error: Cannot divide by zero.") |
|
result = None |
|
else: |
|
print("Division successful.") |
|
finally: |
|
print("This is always executed.") |
|
return result |
|
|
|
print(divide_numbers(10, 2)) # 输出:Division successful. 5.0 |
|
print(divide_numbers(10, 0)) # 输出:Error: Cannot divide by zero. This is always executed. None |
在上面的函数中,我们尝试除以一个数。如果除数是零,我们捕获ZeroDivisionError异常并打印一个错误消息。else块在没有异常发生时执行,而finally块无论是否发生异常都会执行。
2. 高阶函数与函数作为参数
高阶函数是接受函数作为参数或返回函数的函数。这允许你以更加灵活和模块化的方式组织代码。
python复制代码
|
def apply_function_to_list(func, lst): |
|
"""This function applies a given function to each element of a list.""" |
|
return [func(item) for item in lst] |
|
|
|
def square(x): |
|
return x ** 2 |
|
|
|
numbers = [1, 2, 3, 4, 5] |
|
squared_numbers = apply_function_to_list(square, numbers) |
|
print(squared_numbers) # 输出:[1, 4, 9, 16, 25] |
在上面的例子中,apply_function_to_list是一个高阶函数,它接受一个函数func和一个列表lst作为参数。它使用列表推导式将func应用于lst中的每个元素,并返回结果列表。
3. 闭包与函数内的函数
闭包是一个能够访问和操作其外部词法环境(lexical environment)的函数。在Python中,函数是第一类对象,这意味着函数可以作为参数传递,也可以作为其他函数的返回值。这为实现闭包提供了基础。
python复制代码
|
def outer_function(x): |
|
def inner_function(y): |
|
return x + y |
|
return inner_function |
|
|
|
add_five = outer_function(5) |
|
print(add_five(3)) # 输出:8 |
在上面的例子中,outer_function返回了一个内部函数inner_function。inner_function可以访问outer_function的局部变量x,即使outer_function已经执行完毕。这种特性使得闭包在编程中非常有用,例如实现装饰器、回调函数等。