26个你不知道的Python技巧,打包带走!

导读:Python是目前世界上最流行的编程语言之一。因为:

  1. 它容易学习
  2. 它用途超广
  3. 它有非常多的开源支持(大量的模块和库)

本文作者 Peter Gleeson 是一名数据科学家,日常工作几乎离不开python。一路走来,他积累了不少有用的技巧和tips,现在分享给大家。这些技巧将根据其首字母按A-Z的顺序进行展示。


机器学习


01 all or any

Python之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强。Python也因此经常被调侃为“可执行的伪代码”。不信你看:
Python代码


02 bashplotlib

你想要在控制台绘图嘛?
python绘图
现在,你的控制台中就可以有图了


3 collections

Python有一些很棒的默认数据类型,但是有时候他们并不会像你所希望的那样发挥作用。
幸运的是,Python 标准库提供了collection模块。它让你可以使用更为多样数据类型。
collection模块


04 dir

面对一个Python对象,你是否曾想过可以直接看到其属性?你也许可以试试以下的代码:
Python对象


这是运行Python的时候一个非常有用的功能,用于动态探索你所使用的对象和模块。更多详情,可以查看这里:

https://docs.python.org/3/library/functions.html#dir

05 emoji

对的,你没看错!


用python来创建表情包,你也可以。


06 from future import

Python非常受欢迎,这也就导致了它的版本更新非常快,新的版本往往会有很多新特性。你不更新,就无法使用。


然而,不要害怕。future 模块可以让你导入未来版本的功能。有点像时空穿梭有木有!


07 geopy

对于程序猿来说地理可能是一个非常有挑战性的领域。但是,geopy模块则让它变得非常简单。

它通过提取一系列不同地理编码服务的api来工作,让你能够获得一个地方的完整街道地址、纬度、经度,甚至海拔。

这里面同时还包含一个有用的“距离”类别。它能使用你选定的度量去计算了两个地点之间的距离。


08 howdoi

有时候你碰到了一个编程问题,觉得自己之前明明见过它的解决方法,但是却记不起来具体是怎么样的了。于是你想要去StackOverflow上找,但又不想离开这个终端。这个时候,你需要下面这个工具——howdoi

你所遇到的任何问题都可以问它,它会尽他所能给你返回一个答案。

需要注意的是——它只从StackOverflow最顶端的答案中抓取代码。所以它给你返回的不总是最有用的信息…


09 inspect

Python的inspect模块用于收集Python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈等等。


下方的代码样例使用了 inspect.getsource() 来打印它自身的源码。同样还使用了 inspect.getmodule()来打印定义了inspect.getmodule()的模块。最后一行代码则是打印了本行代码所在的行号。在本例中,就是 4 。


nspect模块可以有效地让你知道你的代码是如何工作的,你也可以利用它来完成一些个人的源码。


10 Jedi

Jedi库是一个代码自动补齐和静态分析的库。它可以使你更快更高效地书写代码。除非你在开发自己的编辑器,否则你可能会非常喜欢将Jedi作为自己的编辑插件。


你可能已经正在使用Jedi而只是没发现。IPython项目就是利用Jedi来实现其自动补全功能。


11 **kwargs

无论你学习那种语言,在这条学习之路上总有那么一些里程碑。在Python的编程学习中,理解神秘的**kwargs语法应该算是一个重要的里程碑。


双星“**”放在字典的前面可以让你将字典的内容作为命名参数传递给函数。字典的键是参数的名字,键的值作为参数的值传递给函数。如下所示:

当你想要创建一个函数,它需要能处理事先没有定义过的参数,那么就要用到前面提到的技巧了。


12 List comprehensions

List comprehensions(列表推导式)可以说是我最喜欢的Python技巧之一。这种表达式可以让你写出像自然语言一样易于理解并且还很简洁的代码。


你可以通过这个链接了解更多关于列表推导式的用法。地址:

https://www.learnpython.org/en/List_Comprehensions


13 map

Python有许多非常有用的内置函数。其中一个就是map()——特别是和lambda函数相结合的时候。

在这个例子中,map()对x中的每一个元素都应用了一个简单的lambda函数。它会返回一个map对象,这个对象可以被转化成可迭代对象,如列表或者元组。


14 newspaper3k

newspaper3k,如果你还没有见过它,那么你可能会被这个Python newspaper模块所惊艳到。

它可以让你检索到一系列国际领先出版物中的新闻和相关的元数据。你可以检索图片、文本和作者名。它甚至有一些内置的自然语言处理功能。所以,如果你正在考虑使用BeautifulSoup 或其他自制的爬虫库来应用于你的下一个项目。那么,省省时间和精力吧,你其实只需要$ pip install newspaper3k。


15 Operator overloading(操作符重载)

Python支持操作符重载。“操作符重载”其实是个简单的概念,你是否曾经想过为什么Python可以让你使用“+”操作符来同时实现加法和连接字符串?这就是操作符重载在发挥作用。

你可以定义使用Python标准操作符符号的对象,这可以让你在特定的环境中使用特定的对象,就像下方的例子一样。


16 pprint

Python的默认print函数可以满足日常的输出任务,但如果要打印更大的、嵌套式的对象,那么使用默认的print函数打印出来的内容会很丑陋。


这个时候我们就需要pprint了,它可以让复杂的结构型对象以可读性更强的格式显示。这对于经常要面对非普通数据结构的Python开发者来说是必不可少的工具。


17 Queue(队列)

Python支持多线程,它是通过标准库中的Queue模块来实现的。这个模块可以让你实现队列数据结构。这种数据结构可以让你根据特定的规则添加和检索条目。


“先进先出”(FIFO)队列可以让你按照添加对象的顺序来检索他们。“后进先出”(LIFO)队列可以让你首先访问最近添加的对象。最后,优先队列可以让你根据他们排序的顺序进行检索。


18 repr

当你定义一个类的时候,提供一个方法可以返回用来表示该类对象的可打印字符串会非常有用。例如:


这使得debug更加方便,具体的定义方式如下:


19 sh

sh库让你像调用方法那样调用系统中的命令。


20 Type hints(类型提示)

Python是一种动态类型语言。当你定义变量、函数、类别的时候,你不需要指定数据的类型。这可以大大提升你的开发速度,但也是有代价的。你可能会因为一个简单的输入问题而导致运行出错。


在Python3.5之后,这就不是问题了,在定义函数的时候你可以自主选择要不要提供类型提示。


你还可以定义类型的别名:

虽然不是强制性的,类型注释可以让你的代码理解起来更加简单。它们也允许你使用类型检测工具在运行之前捕获这些零散的类型错误。如果你正在从事大型、复杂的项目,那么类型注释也许会非常有帮助


21 uuid

通过Python标准库中的uuid模块,可以快速并简单地生成统一的唯一ID(又称UUID).

UUID是128位的全局唯一标识符,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。


22 Virtual environments

这可能是我最喜欢的Python技巧了。你可能经常要处理不止一个Python项目,不幸的是,有时候不同项目会依赖不同的Python版本。这个时候,你应该在系统里安装哪个Python版本呢?


幸运的是,Python可以支持建立不同的虚拟环境来满足不同的版本需求。

现在你可以在一台机器上安装和运行各个独立版本的Python。太棒了!


23 wikipedia

Wikipedia有一个很棒的API,它可以让用户通过编程访问到维基的词条内容。使用Python中的wikipedia模块可以让你以最便捷的方式访问该API。

与真实站点一样,该模块支持多种语言、页面消除歧义、随机页面检索,甚至还有donate()方法。


24 xkcd(著名Python漫画)

幽默是Python语言的一个重要特性——毕竟,它是以英国喜剧小品节目《Monty Python’s Flying Circus》(《蒙提·派森的飞行马戏团》)命名的。Python的许多官方文档都引用了该剧中的著名情节。


这种幽默感不仅在文档中可以找到,不信,你可以试试运行下方的代码:

你将打开兰道尔·门罗的著名幽默漫画《xkcd》?


25 YAML

YAML是“YAML不是一种标记语言”的外语缩写。它是一个数据格式语言,是JSON的父集。和JSON不同的是,它可以存储更复杂的对象,并且可以引用自身的元素。你还可以写注释,这让YAML特别适合于书写配置文件。


PyYAML模块可以让你使用Python调用YAML。使用下列语句安装:

然后导入到项目中:

PyYAML 使你能够储存任何数据类型的Python对象,以及任何用户定义类的实例。


26 zip

最后一个技巧也非常酷。你是否曾想要让两个列表中的元素逐个映射,组合成字典?那么你应该使用zip。

内置函数zip()接收若干可迭代对象,然后返回一个由多个元组组成的列表。每个元组根据输入对象的位置索引对其元素进行分组。还可以使用*zip()来“解压”对象。


以上就是我想要呈现的所有Python技巧,感谢阅读,希望大家能从中找到对自己有帮助的技巧。

推荐书籍:

精通Python自然语言处理

Python编程:从入门到实践

贝叶斯思维:统计建模的PYTHON学习法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是100个Python技巧: 1. 使用for循环可以遍历列表、字符串等可迭代对象。 2. 使用range()函数生成指定范围的数字序列。 3. 使用enumerate()函数可以同时获得元素索引和值。 4. 使用zip()函数可以同时遍历多个可迭代对象。 5. 使用列表推导式可以快速生成列表。 6. 使用集合可以进行高效的集合操作。 7. 使用字典可以进行键值对的映射。 8. 使用切片可以快速获取列表、字符串的子序列。 9. 使用函数可以封装可复用的代码块。 10. 使用类可以实现面向对象的编程。 11. 使用模块可以组织和管理代码。 12. 使用异常处理可以捕获和处理程序的错误。 13. 使用with语句可以自动管理资源的释放。 14. 使用装饰器可以增强函数的功能。 15. 使用生成器可以按需计算大量数据。 16. 使用协程可以实现异步编程。 17. 使用多线程可以并发执行任务。 18. 使用多进程可以充分利用多核处理器。 19. 使用文件操作可以读写文件。 20. 使用正则表达式可以进行复杂的文本匹配。 21. 使用time模块可以获取当前时间和进行时间操作。 22. 使用random模块可以生成随机数。 23. 使用math模块可以进行数学运算。 24. 使用json模块可以进行JSON数据的处理。 25. 使用pickle模块可以进行对象的序列化和反序列化。 26. 使用os模块可以进行文件和目录的操作。 27. 使用sys模块可以获取和修改Python解释器的运行时环境。 28. 使用re模块可以进行正则表达式匹配。 29. 使用argparse模块可以解析命令行参数。 30. 使用logging模块可以进行日志记录。 31. 使用unittest模块可以编写和执行单元测试。 32. 使用requests库可以发送HTTP请求。 33. 使用BeautifulSoup库可以解析HTML文档。 34. 使用numpy库可以进行数组和矩阵计算。 35. 使用pandas库可以进行数据处理和分析。 36. 使用matplotlib库可以进行数据可视化。 37. 使用scikit-learn库可以进行机器学习。 38. 使用tensorflow库可以进行深度学习。 39. 使用flask库可以构建Web应用。 40. 使用Django库可以构建全功能的Web应用。 41. 使用SQLite数据库可以进行轻量级的数据存储。 42. 使用MySQL数据库可以进行关系型数据存储。 43. 使用MongoDB数据库可以进行文档型数据存储。 44. 使用Redis数据库可以进行缓存和键值存储。 45. 使用Elasticsearch可以进行搜索和分析。 46. 使用OpenCV库可以进行图像处理和计算机视觉。 47. 使用pygame库可以进行游戏开发。 48. 使用tkinter库可以进行桌面应用程序开发。 49. 使用wxPython库可以进行跨平台的GUI开发。 50. 使用Flask-RESTful可以构建RESTful API。 51. 使用Celery可以进行异步任务的调度和执行。 52. 使用pytest可以进行更简洁和灵活的单元测试。 53. 使用Selenium可以进行Web自动化测试。 54. 使用Faker可以生成随机的测试数据。 55. 使用IPython可以进行交互式的开发和调试。 56. 使用Jupyter Notebook可以进行数据分析和可视化。 57. 使用Spyder可以进行科学计算和Python开发。 58. 使用cookiecutter可以快速构建项目模板。 59. 使用virtualenv可以创建和管理Python虚拟环境。 60. 使用pip可以安装和管理Python包。 61. 使用pyenv可以管理多个Python版本。 62. 使用conda可以创建和管理Python环境。 63. 使用autopep8可以自动格式化Python代码。 64. 使用black可以自动格式化Python代码。 65. 使用flake8可以检查Python代码是否符合PEP8规范。 66. 使用bandit可以检查Python代码中的安全漏洞。 67. 使用isort可以自动排序Python导入语句。 68. 使用mypy可以进行静态类型检查。 69. 使用pylint可以进行代码质量检查。 70. 使用pyinstaller可以将Python程序打包成可执行文件。 71. 使用cx_Freeze可以将Python程序打包成可执行文件。 72. 使用py2exe可以将Python程序打包成可执行文件。 73. 使用pyodbc可以连接和操作数据库。 74. 使用paramiko可以进行SSH远程操作。 75. 使用fabric可以进行任务的自动化部署。 76. 使用pytest-django可以简化Django的单元测试。 77. 使用django-rest-framework可以快速构建RESTful API。 78. 使用scrapy可以进行Web爬虫。 79. 使用sqlalchemy可以进行高级数据库操作。 80. 使用pymongo可以连接和操作MongoDB数据库。 81. 使用tqdm可以在循环中显示进度条。 82. 使用click可以构建命令行接口。 83. 使用cProfile可以进行性能分析。 84. 使用line_profiler可以逐行分析代码性能。 85. 使用memory_profiler可以分析内存使用情况。 86. 使用profilehooks可以进行分析函数调用性能。 87. 使用PyInstaller可以将Python程序打包成可执行文件。 88. 使用Openpyxl可以读写Excel文件。 89. 使用Pillow可以进行图像处理。 90. 使用pyautogui可以进行图像识别和自动化操作。 91. 使用pytesseract可以进行文字识别。 92. 使用pywin32可以操作Windows系统API。 93. 使用pyserial可以进行串口通信。 94. 使用opencv-python可以进行图像处理。 95. 使用catboost可以进行梯度提升决策树算法。 96. 使用fasttext可以进行文本分类和词向量训练。 97. 使用gensim可以进行文本相似度计算。 98. 使用jieba可以进行中文分词。 99. 使用lightgbm可以进行梯度提升算法。 100. 使用xgboost可以进行梯度提升算法。 这些小技巧涵盖了Python的各个方面,包括语法、标准库、第三方库和常见开发任务。通过学习和应用这些技巧,可以提高Python编程的效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值