Python 高级特性
一、列表推导式
列表推导式(List Comprehension)是一种简洁的方式来创建列表。它允许在一个表达式中对一个可迭代对象进行循环,并根据特定的条件生成新的列表。
(一)基本语法
[expression for item in iterable if condition]
其中,expression
是对每个item
进行的操作,iterable
是一个可迭代对象,condition
是一个可选的条件。
(二)示例
-
生成一个包含 0 到 9 的平方的列表:
squares = [i**2 for i in range(10)] print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-
筛选出偶数:
even_numbers = [i for i in range(10) if i % 2 == 0] print(even_numbers) # [0, 2, 4, 6, 8]
二、生成器表达式
生成器表达式(Generator Expression)与列表推导式类似,但它返回的是一个生成器对象,而不是一个列表。生成器对象在需要的时候才生成值,从而节省内存。
(一)基本语法
(expression for item in iterable if condition)
(二)示例
-
生成一个包含 0 到 9 的平方的生成器:
squares_generator = (i**2 for i in range(10)) for square in squares_generator: print(square)
-
筛选出偶数的生成器:
even_numbers_generator = (i for i in range(10) if i % 2 == 0) for even_number in even_numbers_generator: print(even_number)
三、装饰器
装饰器(Decorator)是一种用于修改函数或类的行为的工具。它可以在不修改原始代码的情况下,为函数或类添加额外的功能。
(一)基本语法
def decorator_function(func): def wrapper_function(*args, **kwargs): # 在调用原始函数之前的操作 result = func(*args, **kwargs) # 在调用原始函数之后的操作 return result return wrapper_function @decorator_function def original_function(): # 原始函数的代码 pass
(二)示例
-
定义一个装饰器,用于计算函数的执行时间:
import time def timeit(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"{func.__name__} took {end_time - start_time} seconds.") return result return wrapper @timeit def slow_function(): time.sleep(2) print("Slow function executed.")
-
调用装饰后的函数:
slow_function()
四、上下文管理器(with 语句)
上下文管理器(Context Manager)是一种用于管理资源的工具,它可以确保资源在使用后被正确地释放。在 Python 中,可以使用with
语句来使用上下文管理器。
(一)基本语法
with context_manager as var: # 使用资源的代码
(二)示例
-
使用
with
语句打开文件:
with open('file.txt', 'r') as f: content = f.read() print(content)
在上面的代码中,open('file.txt', 'r')
返回一个文件对象,它是一个上下文管理器。当with
语句块执行完毕后,文件对象会自动关闭。
五、Lambda 表达式
Lambda 表达式(Lambda Expression)是一种匿名函数,它可以在一行代码中定义一个简单的函数。
(一)基本语法
lambda arguments: expression
其中,arguments
是函数的参数,expression
是函数的返回值。
(二)示例
-
定义一个加法函数:
add = lambda x, y: x + y print(add(2, 3)) # 5
六、Map、Filter 和 Reduce 函数
map
、filter
和reduce
是 Python 中的三个高级函数,它们可以对可迭代对象进行操作,返回一个新的可迭代对象。
(一)Map 函数
map
函数接受一个函数和一个可迭代对象作为参数,它将函数应用于可迭代对象的每个元素,并返回一个新的可迭代对象。
def square(x): return x**2 numbers = [1, 2, 3, 4, 5] squared_numbers = map(square, numbers) print(list(squared_numbers)) # [1, 4, 9, 16, 25]
(二)Filter 函数
filter
函数接受一个函数和一个可迭代对象作为参数,它将函数应用于可迭代对象的每个元素,并返回一个新的可迭代对象,其中只包含函数返回值为True
的元素。
def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5] even_numbers = filter(is_even, numbers) print(list(even_numbers)) # [2, 4]
(三)Reduce 函数
reduce
函数接受一个函数和一个可迭代对象作为参数,它将函数应用于可迭代对象的元素,并将结果累加到一个单一的值中。在 Python 3 中,reduce
函数需要从functools
模块中导入。
from functools import reduce def add(x, y): return x + y numbers = [1, 2, 3, 4, 5] sum_of_numbers = reduce(add, numbers) print(sum_of_numbers) # 15
以上就是 Python 的一些高级特性的介绍,这些特性可以使代码更加简洁、高效和可读。