当前位置:首页>python>Python十大核心进阶特性知识总结

Python十大核心进阶特性知识总结

  • 2026-10-11 08:43:29
Python十大核心进阶特性知识总结

1. 生成器与迭代器

核心:二者均用于遍历,迭代器需实现__iter__和__next__方法;生成器用yield定义,惰性计算省内存,可通过send()控制逻辑,适用于大数据、大文件场景。

# 生成器示例
defdata_generator():
foriinrange(1000000):
yieldi# 惰性生成
gen=data_generator()
print(next(gen))  # 逐次取值

2. 装饰器

核心:装饰器是高阶函数嵌套,不修改原函数即可添加功能(日志、计时等),依赖闭包,@语法简化调用,是后端开发核心技术。

# 装饰器示例
importtime
deftimer(func):
defwrapper(*args, **kwargs):
start=time.time()
res=func(*args, **kwargs)
print(f"耗时:{time.time()-start:.4f}秒")
returnres
returnwrapper

3. 上下文管理器

核心:自动管理资源(文件、数据库等),避免泄露。可调用内置(with open())或自定义(实现__enter__、__exit__方法)。

# 上下文管理器示例(内置)
withopen("test.txt", "r") asf:
print(f.read())  # 自动关闭文件,无需手动close()

4. 闭包

核心:闭包是装饰器底层,内层函数引用外层变量且被返回,可保留变量状态、实现数据隔离,注意避免引用可变变量的问题。

# 闭包示例
defouter(count):
definner():
nonlocalcount
count+=1
returncount
returninner
counter=outer(0)
print(counter())  # 1

5. 魔法方法

核心:双下划线特殊方法(如__init__、__str__),自动触发,用于自定义类行为,简化代码,是面向对象核心拓展。

# 魔法方法示例
classStudent:
def__init__(self, name):
self.name=name
def__str__(self):
returnf"Student({self.name})"
print(Student("小明"))  # 触发__str__,输出Student(小明)

6. 列表推导式与字典推导式

核心:简洁语法糖,快速创建列表/字典,替代for循环,效率高,可结合条件筛选,避免嵌套过深影响可读性。

# 推导式示例
list1= [iforiinrange(5) ifi%2==0]  # 列表推导式:[0,2,4]
dict1= {i:i*2foriinrange(3)}        # 字典推导式:{0:0,1:2,2:4}

7. 模块化与包

核心:模块化拆分代码到.py文件,包是模块集合(含__init__.py),实现代码复用、降低耦合,通过import导入,适配工程化开发。

# 模块化示例(假设test.py为模块)
importtest# 导入模块
fromtestimportfunc# 导入模块中的函数

8. 异常处理进阶

核心:除基础try-except,支持捕获多异常、自定义异常,可通过raise主动抛异常,提升程序容错性,便于问题定位。

# 异常处理示例
classMyError(Exception):  # 自定义异常
pass
try:
num=int(input("输入数字:"))
ifnum<0:
raiseMyError("数字不能为负")
exceptValueError:
print("请输入有效数字")
exceptMyErrorase:
print(e)

9. 深浅拷贝

核心:用于复制对象,浅拷贝仅复制表层数据,深拷贝递归复制所有层级数据,避免修改副本影响原对象,常用copy模块实现。

# 深浅拷贝示例
import copy
a = [1, [2, 3]]
b = copy.copy(a)    # 浅拷贝
c = copy.deepcopy(a)# 深拷贝
a[1].append(4)
print(b)  # [1, [2, 3, 4]](受原对象影响)
print(c)  # [1, [2, 3]](不受影响)

10. 函数式编程

核心:基于不可变数据,依赖纯函数(无副作用),常用map、filter、reduce函数,简化逻辑,提升代码可读性与可维护性。

# 函数式编程示例
from functools import reduce
# map映射、filter筛选、reduce聚合
nums = [1,2,3,4]
print(list(map(lambda x: x*2, nums)))  # [2,4,6,8]
print(list(filter(lambda x: x%2==0, nums)))  # [2,4]
print(reduce(lambda x,y: x+y, nums))  # 10

最新文章

随机文章