Skip to main content

Python进阶

掌握Python进阶特性可以让您的代码更加简洁、高效、可维护。本文介绍Python的核心进阶概念和最佳实践。

进阶特性概览

类别内容
面向对象编程类设计、继承与多态、魔术方法
函数式编程高阶函数、装饰器、生成器、推导式
并发编程多线程、多进程、异步IO
元编程反射、元类、动态代码

面向对象编程

类与对象

class Person:
"""人员类"""
def __init__(self, name, age):
self.name = name
self.age = age

def greet(self):
return f"您好,我是{self.name}{self.age}岁。"

继承与多态

class Student(Person):
"""学生类,继承自Person类"""
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id

def study(self, subject):
return f"{self.name}正在学习{subject}"

# 重写父类方法
def greet(self):
return f"您好,我是学生{self.name},学号{self.student_id}"

函数式编程

高阶函数

# map函数 - 将函数应用于可迭代对象的每个元素
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16, 25]

# filter函数 - 过滤可迭代对象的元素
even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4]

# reduce函数 - 对可迭代对象的元素累积应用函数
from functools import reduce
sum_all = reduce(lambda x, y: x + y, numbers) # 15

列表推导式

# 基本列表推导式
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件的推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]

# 字典推导式
word_lengths = {word: len(word) for word in ["Python", "编程", "学习"]}

生成器

# 生成器函数 - 使用yield语句
def fibonacci(n):
"""生成斐波那契数列的前n项"""
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b

# 使用生成器
for num in fibonacci(10):
print(num) # 打印斐波那契数列的前10项

# 生成器表达式
even_gen = (x for x in range(100) if x % 2 == 0)

装饰器

# 简单装饰器
def log_function(func):
def wrapper(*args, **kwargs):
print(f"调用函数: {func.__name__}")
result = func(*args, **kwargs)
print(f"函数{func.__name__}执行完毕")
return result
return wrapper

# 使用装饰器
@log_function
def add(a, b):
return a + b

sum_result = add(3, 5) # 会打印日志信息

上下文管理器

# with语句自动管理资源
with open('example.txt', 'w') as file:
file.write('Hello, World!')
# 文件会自动关闭

# 自定义上下文管理器
class DatabaseConnection:
def __enter__(self):
print("连接数据库")
return self

def __exit__(self, exc_type, exc_val, exc_tb):
print("关闭数据库连接")
return False

常用库与框架

领域库名功能
数据科学NumPy数值计算
数据科学Pandas数据分析
数据科学Matplotlib数据可视化
机器学习scikit-learn经典机器学习
机器学习TensorFlow深度学习框架
机器学习PyTorch深度学习研究
Web开发Django全功能Web框架
Web开发Flask轻量级Web框架
Web开发FastAPI现代API框架
网络RequestsHTTP客户端
网络aiohttp异步HTTP
网络Scrapy爬虫框架

掌握这些进阶概念将帮助您编写更高质量的Python代码,充分发挥Python的强大功能。