当前位置: 首页 > 科技观察

Python的26个技巧

时间:2023-03-14 11:11:46 科技观察

Python是世界上最流行的编程语言之一。原因有很多:易于学习跨平台拥有大量模块和库作为数据科学家,我将Python作为日常工作的一部分。在此过程中,我学到了一些有用的提示和技巧。在这里,我尝试以A-Z格式分享其中的一些内容。这些“技巧”大部分是我在日常工作中使用或偶然发现的东西。我在浏览Python标准库文档时发现了一些。我在搜索PyPi时发现的其他人。然而,值得称赞的是,我在awesome-python.com上找到了其中的四五个。这是数百个有趣的Python工具和模块的精选列表。值得浏览寻找灵感!alloranypython如此流行的原因之一是因为它的可读性和表现力。人们常开玩笑说Python是“可执行的伪代码”。但是,当您可以编写如下代码时,很难反驳:bashplotlibDoyouwanttodrawgraphsintheconsole?您可以在控制台中绘制图形。collectionspython有一些不错的默认数据类型,但有时它们的行为不如您期望的那样。幸运的是,Python标准库提供了collections模块。这个方便的插件为您提供了更多的数据类型。dir你有没有想过如何查看Python对象内部的属性?当然可以。看看这个命令行:当以交互方式运行Python时,这是一个非常有用的功能,可以动态查看您正在使用的对象和模块。表情符号是的,这是真的!不要假装你不想尝试它......from__future__importPython的流行意味着总是有新版本在开发中。新版本意味着新功能——除非你的版本已经过时了。但是,不要害怕。__future__模块允许您从未来版本的Python中导入功能。这几乎就像时间旅行,或者魔法什么的。你为什么不开始导入花括号?Geopy地理可能是程序员比较难挑战的领域,经常让人摸不着头脑。但是geopy模块使这变得非常容易。它通过抽象一组不同的地理编码服务API来工作。使您能够获得一个地方的完整街道地址、纬度、经度和海拔高度。还有一个有用的距离类。以您喜欢的单位计算两个位置之间的距离。我有编码问题但不记得以前见过的解决方案怎么办?需要搜索StackOverflow,但又不想离开终端?那么您需要这个有用的命令行工具。无论你有什么问题,只要问它,它会尽力回答你的问题,但要小心-它会从StackOverflow上的顶级答案中获取代码。所以可能并不总是提供最有用的信息……inspectPython的inspect模块对于理解幕后发生的事情非常有帮助。你甚至可以用它来调用它自己的方法!以下代码示例使用inspect.getsource输出自己的源代码。它还使用inspect.getmodule输出由它定义的模块。***一行代码打印出自己的行号。当然,除了这些琐碎的用途之外,inspect模块对于了解您的代码在做什么也很有用。您还可以使用它来编写自文档化代码。JediJedi库是一个自动完成和代码分析库。它使编写代码更快、更高效。除非您正在开发自己的IDE,否则您可能最感兴趣的是将Jedi用作编辑器插件。幸运的是,这已经成为现实!但是,您可能已经在使用Jedi。IPython项目正在利用Jedi的代码完成功能。**kwargs学习任何一门语言,都有很多里程碑。对于Python,理解神秘的**kwargs语法可能算作一个。字典对象前面的双星号允许您将该字典的内容作为命名参数传递给函数。字典的键是参数名,值是传递给函数的值。你甚至不需要用kwargs来命名字典!,当您想编写可以处理以前未定义的命名参数的函数时,这很有用。列表推导关于Python编程我最喜欢的事情之一是它的列表推导。这些表达式使编写非常干净的代码变得很容易,这些代码读起来几乎像自然语言。您可以在此处阅读有关如何使用它们的更多信息。mappython通过许多内置功能支持函数式编程。map函数是最有用的函数之一——尤其是与lambda函数结合使用时。在上面的示例中,map将一个简单的lambda函数应用于x中的每个元素。它返回一个地图对象,可以将其转换为一些可迭代对象,如列表或元组。newspaper3k如果您还没有看到它,请准备好被Python的newspaper3k模块震撼。它允许您从一系列领先的国际出版物中检索新闻文章和相关元数据。您可以检索图像、文本和作者姓名。它甚至具有一些内置的NLP功能。因此,如果您想在下一个项目中使用BeautifulSoup或其他自制的网络抓取库,请节省您的时间和精力并改用BeautifulSoup。运算符重载Python提供对运算符重载的支持,这个术语让您听起来像个合法的计算机科学家。这实际上是一个简单的概念。有没有想过为什么python允许您使用“+”运算符来添加数字和连接字符串?这是运算符重载。您可以使用Python的标准运算符符号和特殊方法来定义对象。这允许您在与您正在处理的对象相关的上下文中使用它们。pprintpython的默认打印功能确实可以完成它的工作。但是当试图输出任何大的嵌套对象时,结果很难看。有漂亮的打印标准库。可以以易于阅读的格式输出复杂的结构化对象。对于任何处理非平凡数据类型的Python开发人员来说都是必不可少的。queuePython支持多线程,标准库的队列模块对此有帮助。该模块允许您实现队列数据结构。这些数据结构允许您根据特定规则添加和检索条目。先进先出(FIFO)队列允许您按添加顺序检索对象。后进先出(LIFO)队列允许您首先访问最近添加的对象。***,优先队列允许您根据对象的排序顺序检索对象。下面是一个如何在Python中使用队列进行多线程编程的示例。__repr__在Python中定义类或对象时很有用,它提供了一种官方支持的将对象呈现为字符串的方式。例如:这使得调试代码更容易。可以像这样添加到您的类定义中:shpython是一种很棒的脚本语言。使用标准的os和sbprocess库有时会让人头疼。sh库提供了一个简洁的替代方案。它允许您调用任何程序,就好像它是一个普通函数一样——对于自动化工作流和任务非常有用,所有这些都在Python中。类型提示Python是一种动态类型语言。在定义变量、函数、类等时,不需要指定数据类型。这有助于减少开发时间。然而,没有什么比由简单的类型问题引起的运行时错误更烦人的了。从Python3.5开始,您可以选择在定义函数时提供类型提示。您还可以定义类型别名:虽然这不是强制性的,但类型注释可以使您的代码更易于理解。它们还允许您使用类型检查工具在运行它们之前捕获这些杂散类型错误。如果您正在处理大型复杂项目,那么值得使用!uuid生成通用唯一标识符(UUID)的一种快速简便的方法是使用Python标准库的UUID模块。这可以生成一个几乎可以肯定是唯一的随机128位数字。事实上,可以生成超过2112个可能的UUID。超过5x1036(或5,000,000,000,000,000,000,000,000,000,000,000,000)。在给定的集合中找到重复项的概率非常低。即使有数万亿个UUID,重复的几率也远低于十亿分之一。非常有用的两行代码。虚拟环境这可能是我最喜欢Python的地方。您可能同时处理多个Python项目。不幸的是,有时两个项目将依赖于相同依赖项的不同版本。您选择在系统上安装什么?幸运的是,Python对虚拟环境的支持让您可以做到这两点。从命令行:您现在可以在同一台机器上安装不同版本的Python。wikipedia维基百科有一个很好的API,允许用户以编程方式访问最新的完全免费的知识和信息。Wikipedia模块使访问此API非常方便。与真实网站一样,该模块支持多种语言、页面消歧、随机页面检索,甚至还有捐赠方法。xkcd幽默是Python语言的一个重要特征——毕竟它是以英国喜剧♂命名的。Python的大部分官方文档都引用了这部喜剧著名的单幕。尽管如此,幽默感并不局限于官方文档。试试这个代码:永不改变,Python。从不改变。YAMLYAML代表“YAMLAin'tMarkupLanguage”,它是一种数据格式化语言,是JSON的超集。与JSON不同,它可以存储更复杂的对象并引用它自己的元素。还可以写注释,特别适合写配置文件。PyYAML模块允许您将YAML与Python结合使用。像这样安装它:然后导入到您的项目中:PyYaML允许您存储任何数据类型的Python对象,以及任何用户定义类的实例。zip给你,这是最后一招,真的很酷。曾经需要将两个列表组合成字典吗?zip内置函数接受多个可重复对象,并返回一个元组列表。每个元组按位置索引对输入对象的元素进行分组。您还可以通过调用*zip来“解压缩”一个对象。谢谢阅读!至此你已经阅读了整篇文章,Python的26个小技巧-我希望你对你的下一个项目有所帮助。Python是一种非常多样化且适合开发的语言,因此我确信有很多内容我没有涉及。在下方发表评论并分享您自己最喜欢的Python技巧!