详细内容或原文请订阅后点击阅览
Python Functools&Itertools:7个智能代码的超级方便工具
想要更智能编码,不是更难吗?从Python的函数和Itertools开始使用这7个实用程序,这些实用程序有用,实用和优雅!
来源:KDnuggetsPython的标准库有多个实用程序,可以将您的代码从笨拙和冗长转换为优雅而高效。其中,功能和迭代模块通常非常方便地完成非平凡的任务。
今天,我们将从这些模块中查看七个基本工具(功能和装饰器),这些模块将使您的Python代码更好。
让我们开始。
🔗链接github上的代码
链接到GitHub上的代码1。functools.lru_cache
functools.lru_cache
您可以使用@lru_cache装饰器来缓存功能结果,并避免重复昂贵的操作。
@lru_cache
这是一个例子:
来自功能引起 @lru_cache(maxsize = 128) def fetch_user_data(user_id): #昂贵的数据库调用 返回database.get_user(user_id) #第一个呼叫命中数据库,随后的呼叫使用缓存 用户= fetch_user_data(123)#数据库调用 用户= fetch_user_data(123)#返回缓存结果
其工作原理:@lru_cache Decorator存储会导致内存。当再次调用fetch_user_data(123)时,它将返回缓存结果,而不是击中数据库。 MaxSize = 128保持了128个最新结果。
fetch_user_data(123)
maxsize = 128
2。itertools.chain
itertools.chain
要处理多个迭代作为一个连续流,您可以从itertools模块中使用chain.from_iterable()。
链。from_iterable()
让我们以一个例子:
来自Itertools进口链 #处理多个日志文件作为一个流 error_logs = ['app.log','db.log','api.log'] all_lines = chain.from_iterable(错误_logs中的f开放(f)) error_count = sum(如果在行中'错误',则为all_lines中的行1) 它的工作原理:chain.from_iterable()采用多个迭代,并创建一个连续的流。它一次读一行。 3。 functools.partial 部分 以下是部分功能的示例: auth_error log_event 4。itertools.combinations itertools.combinations 组合 考虑以下示例: 组合(功能,2) 5。functools.singledispatch @singledispatch
来自Itertools进口链 #处理多个日志文件作为一个流 error_logs = ['app.log','db.log','api.log'] all_lines = chain.from_iterable(错误_logs中的f开放(f)) error_count = sum(如果在行中'错误',则为all_lines中的行1)
它的工作原理:chain.from_iterable()采用多个迭代,并创建一个连续的流。它一次读一行。
3。
functools.partial
部分
以下是部分功能的示例:
auth_error
log_event
4。itertools.combinations
itertools.combinations
组合
考虑以下示例:
组合(功能,2)
5。functools.singledispatch@singledispatch