给大家推荐一个堪称瑞士军刀的 Python 库

2024-05-15 12:32

本文主要是介绍给大家推荐一个堪称瑞士军刀的 Python 库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是「进击的Coder」的第 349 篇技术分享

作者:费弗里

来源:Python大数据分析

阅读本文大概需要 6 分钟。

1 简介

我们在使用Python完成日常任务时,经常会遇到一些很小的辅助性的需求,又不想花费时间去搜索是否已有现成的库实现了这些功能,往往则需要自己临时编写一些逻辑或函数。

而事实上已经有勤劳伟大的开发者编写了集成众多小功能于一身的第三方库,本文要给大家介绍的funcy就是其中非常实用的一个,它汇集了数量惊人的实用函数及装饰器,帮助我们使用Python更好的践行「函数式编程」理念。

图 1

2 funcy中的实用API

funcy的设计宗旨就是汇集一系列花哨的实用函数,其在不断地迭代过程中,已经积累下相当多的功能,下面我们就来学习其中代表性的一些。

使用pip install funcy完成安装后,推荐大家按照如下方式进行导入:

import funcy as fc
  • 「无限计数器」

funcy中的count()可以生成一个可指定起点和步长的无限迭代器,默认参数start=0step=1,我们可以用它来替代常规的while循环+自增变量的逻辑:

for i in fc.count():print(i, end='\r')# 当i大于等于1000时停止迭代,否则继续if i >= 1000:break
  • 「展平嵌套数组」

funcy中的flatten()可以用来展平任意的嵌套数组:

图 2
  • 「在指定数组中插空」

funcy中的interpose()可以用来将指定元素插入到对应数组的两两元素之间:

图 3
  • 「批量删除满足指定条件的元素」

funcy中有两种从原始列表中删除指定元素的方法,方式1是使用remove()来传入条件判断函数来删除满足条件的元素,类似filter()的方式:

图 4

第二种方式是利用funcy中的without(),它可以帮我们从原始数组中排除指定的1个或多个元素,譬如下面我们把2、5、7、9排除掉:

图 5
  • 「按照制定条件分组划分原始数组」

funcy中提供了group_by()函数,帮助我们传入函数,作用于指定数组的每个元素上,并自动按照返回的结果进行分组输出,就像下面的例子那样:

图 6
  • 「等长度拆分数组,丢弃末尾长度不足的部分」

funcy中的partition()帮助我们对输入的数组做指定长度的切片划分,譬如下面的例子,我们对列表[0, 1, ..., 10]进行长度为3的切片拆分,剩余不足长度3的部分就会被丢弃:

图 7
  • 「等长度拆分数组,并保留长度不足的部分」

partition()功能相似,funcy中的chunks()会在等长度拆分数组的同时,保留末尾长度不足的部分单独输出:

图 8
  • 「输出相邻成对元素二元组」

利用funcy中的pairwise(),我们可以对输入数组从头开始,将相邻的成对元素以二元组的形式输出:

图 9
  • 「合并多个同类型对象」

利用merge(),我们可以将传入的多个同类型数据结构拼成一个完整的,这在合并集合或字典时尤其受用:

图 10
  • 「阻止函数遇到错误时的常规报错方式」

有些情况下我们执行某些函数时,由于某些原因导致报错,但如果我们并不希望遇到错误就中断的话,就需要自己写额外的try...except...逻辑,而funcy中的silent()则可以让这个过程变得很省事:

图 11
  • 「阻止函数遇到指定错误时的常规报错方式」

上面介绍的silent()会帮助传入函数遇到任意错误时返回None,而funcy中的ignore()则赋予我们指定错误类型,以及报错时设定返回值的能力:

图 12
  • 「装饰指定函数,使其记忆历史执行记录值」

下面要介绍的方法非常的实用,想象一下这样的场景:你书写的某个函数接受输入,然后经过一段耗时不菲的计算过程输出结果,但在函数实际调用过程中经常遇到重复的传入参数。

这种时候你肯定希望自己的函数可以“记忆”下执行过的参数与输出结果,省得大量重复计算,而funcy中的memoize装饰器就可以帮助我们快速改造自己的函数:

图 13

而函数的缓存记录可查询,可自定义添加,也可以手动清空:

图 14
  • 「以标签:值的方式辅助debug」

很多情况下,print()循环过程变量变化情况的debug方式虽然很粗糙,但有些时候下却很方便,但在一些诸如「列表推导」等情况下却不太方便注入print()代码。

而利用funcy中的tap()函数,我们可以将迭代变量传入,并填写对应说明标签,即可快速查看运行过程,tap()的逻辑其实很简单,相当于把输入值打印一下再原封不动地返回,但既然有现成的API,何乐而不为~

图 15
  • 「约束某个函数的可执行次数」

有些情况下,我们希望程序中的某个函数在整个程序的生命周期中只执行一次,譬如创建数据库连接等操作时,而funcy中提供的装饰器once就可以帮助我们快速实现这个功能,并且保证了线程安全:

图 16

除了以上介绍的这些功能之外,funcy还拥有其他众多的实用 API,你可以进入其官方文档进行查看( https://funcy.readthedocs.io/en/stable/ )。

以上就是本文的全部内容,欢迎在评论区与我进行讨论~

点个在看你最好看

这篇关于给大家推荐一个堪称瑞士军刀的 Python 库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991845

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统