Python的高级语法包括许多特性,这些特性使得Python成为一种强大且易于使用的编程语言。以下是一些Python的高级语法特性及其相关代码示例:
1. 生成器(Generators)
生成器是一种特殊的迭代器,允许你逐个生成值,而不是一次性计算所有值。这对于处理大量数据或无限序列非常有用。
|
def simple_generator(): |
|
n = 1 |
|
print(f"{n} ", end="") |
|
while n <= 5: |
|
n += 1 |
|
yield n |
|
print(f"{n} ", end="") |
|
|
|
# 使用生成器 |
|
for num in simple_generator(): |
|
print(num) |
2. 列表推导式(List Comprehensions)
列表推导式是创建列表的简洁方式,可以通过一个表达式以及一个或多个for和if语句来生成列表。
|
# 生成一个平方列表 |
|
squares = [x**2 for x in range(10)] |
|
print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] |
|
|
|
# 使用if语句进行筛选 |
|
even_squares = [x**2 for x in range(10) if x % 2 == 0] |
|
print(even_squares) # 输出: [0, 4, 16, 36, 64] |
3. 装饰器(Decorators)
装饰器是一个接受函数作为参数并返回一个新函数的函数。它们通常用于修改或增强现有函数的行为。
|
def my_decorator(func): |
|
def wrapper(): |
|
print("Something is happening before the function is called.") |
|
func() |
|
print("Something is happening after the function is called.") |
|
return wrapper |
|
|
|
@my_decorator |
|
def say_hello(): |
|
print("Hello!") |
|
|
|
say_hello() |
|
# 输出: |
|
# Something is happening before the function is called. |
|
# Hello! |
|
# Something is happening after the function is called. |
4. 上下文管理器(Context Managers)
上下文管理器允许你定义在进入和退出特定代码块时应该执行的操作,通常用于文件操作、线程锁定等。
|
with open('file.txt', 'r') as file: |
|
content = file.read() |
|
print(content) |
|
# 文件会在with块结束后自动关闭 |
5.闭包
闭包是当一个内部函数引用其外部函数的变量时,即使外部函数已经执行完毕,这个内部函数仍然可以访问并使用外部函数的变量。
|
def outer_function(x): |
|
def inner_function(y): |
|
return x + y |
|
return inner_function |
|
|
|
closure = outer_function(10) |
|
print(closure(5)) # 输出: 15 |
6. 推导式(Comprehensions)
除了列表推导式,还有字典推导式、集合推导式等。
|
# 字典推导式 |
|
dict_comp = {x: x**2 for x in range(10) if x % 2 == 0} |
|
print(dict_comp) # 输出: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64} |
|
|
|
# 集合推导式 |
|
set_comp = {x for x in range(10) if x % 3 == 0} |
|
print(set_comp) # 输出: {0, 3, 6, 9} |
7. 异步编程(Asynchronous Programming)
Python 3.5+ 引入了 async和 await关键字,用于编写异步代码,提高I/O密集型任务的性能。
|
import asyncio |
|
|
|
async def fetch_data(session, url): |
|
async with session.get(url) as response: |
|
return await response.text() |
|
|
|
async def main(): |
|
async with aiohttp.ClientSession() as session: |
|
html = await fetch_data(session, 'http://example.com') |
|
print(html) |
|
|
|
# 运行主函数 |
|
loop = asyncio.get_event_loop() |
|
loop.run_until_complete(main()) |
这些只是Python高级语法特性的冰山一角。Python还有更多高级功能,如元类(metaclasses)、描述符(descriptors)、协议(protocols)等,这些特性