这些Python代码技巧,你肯定还不知道
被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能。本文或许能够让你学到一些新技巧。
Python 是世界上最流行、热门的编程语言之一,原因很多,比如:
易于学习
超高的通用性
具备大量模块和库
本文将分享一些使用 Python 的技巧,顺序按照 A-Z 排列。
1.all or any
Python 非常受欢迎的原因之一是其可读性和表达性。
人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:
2.bashplotlib
想在控制台中绘图吗?
使用上面的行,即可在控制台中绘图。
3.collections
Python 有一些很棒的默认数据类型,但有时候它们可能不会尽如你意。
不过,Python 标准库提供了 collections 模块。这个方便的附加组件可以为你提供更多数据类型。
collections 模块:https://docs.python.org/3/library/collections.html
4.dir
你是否想过如何查看 Python 对象内部及其具有哪些属性?
输入以下命令行:
当以交互方式运行 Python 时,这可能是一个非常有用的功能,并且可以动态地探索你正在使用的对象和模块。
5.emoji
是的,真的有。请点击这里:https://pypi.org/project/emoji/
别以为我不知道你会偷偷试它
6.fromfutureimport
Python 流行的一个结果是,总有新版本正在开发中。新版本意味着新功能——除非你的版本已经过时。
不过,别担心。_ future_模块允许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的。
_ future_模块:https://docs.python.org/2/library/future.html
7.geopy
地理(Geography)对于程序员来说可能是一个具有挑战性的领域。但是 geopy 模块让它变得异常简单。
geopy 模块:https://geopy.readthedocs.io/en/latest/
它通过抽取一系列不同地理编码服务的 API 来工作,使用户获取一个地方的完整街道地址、纬度、经度,甚至海拔高度。
另外一个有用的功能是距离:它可以用你喜欢的度量单位计算出两个位置之间的距离。
8.howdoi
陷入编码问题,却不记得以前见过的解决方案?需要检查 StackOverflow,但不想离开终端?
那么你需要这个有用的命令行工具:https://github.com/gleitz/howdoi
无论你有什么问题都可以问它,它会尽力回答。
但是请注意——它会从 StackOverflow 的最高票答案中抓取代码。也就是说它提供的信息并非总是有用……
9.inspect
Python 的 inspect 模块非常有助于理解问题背后的详情。你甚至可以在 inspect 模块上调用其方法!
inspect 模块:https://docs.python.org/3/library/inspect.html
下面的代码示例使用 inspect.getsource() 打印自己的源代码。它还使用 inspect.getmodule() 打印定义它的模块。
最后一行代码打印出自己的行号。
当然,除了这些琐碎的用途之外,inspect 模块还能帮助你理解代码正在做的事。你还可以用它编写自文档化代码。
10.Jedi
Jedi 库是一个自动完成和代码分析的库。它使代码编写变得更快、效果更高。
除非你正在开发自己的 IDE,否则你肯定会对使用 Jedi 库作为编辑插件很感兴趣。
Jedi:https://jedi.readthedocs.io/en/latest/docs/usage.html
你可能已经在使用 Jedi 了。IPython 项目就使用 Jedi 实现代码自动完成功能。
11.**kwargs
学习任何语言时都会遇到很多里程碑。对于 Python 来说,理解神秘的**kwargs 语法可能算是其中之一。
词典对象前面的双星号可以让你把该词典的内容作为命名参数输入到函数中。
词典的秘钥是参数名,值是传递给函数的值。你甚至不需要称它为 kwargs!
当你想编写能够处理事先未定义的命名参数的函数时,这个很有用。
12.列表推导式(List comprehensions)
我最喜欢 Python 编程的原因之一是它的列表推导式(https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)。
这些表达式使得编写干净易读的代码变得很容易,那些代码读起来几乎像自然语言一样。
关于它们的更多使用信息请查看:https://www.learnpython.org/en/List_Comprehensions
13.map
Python 通过许多内置功能支持函数式编程。map() 函数是最有用的函数之一——特别是当它与 lambda 函数结合使用时。
lambda 函数:https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions
在上面的例子中,map() 将一个简单的 lambda 函数应用于 x 中的每个元素。它返回一个 map 对象,该对象可以被转换成可迭代的对象,如列表或元组。
14.newspaper3k
如果你之前没有见过它,那么我建议你先查看:https://pypi.org/project/newspaper3k/。
它可以帮助你从大量顶级国际出版物中检索到新闻文章和相关元数据。你可以检索图像、文本和作者名。
它还有一些内置的 NLP 功能。
地址:https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#performing-nlp-on-an-article
如果你想在下一个项目中使用 BeautifulSoup 或其它 DIY 网页抓取库,那么不如使用$ pip install newspaper3k,既省时又省事,何乐而不为呢?
15.运算符重载(Operator overloading)
Python 支持运算符重载。
它实际上是一个简单的概念。你有没有想过为什么 Python 允许用户使用 + 运算符来将数字相加,并级联字符串?这就是运算符重载在发挥作用。
你可以使用 Python 的标准运算符号来定义对象,这样你可以在与这些对象相关的语境中使用它们。
16.pprint
Python 的默认 print 函数就可以实现打印功能。但如果尝试打印较大的嵌套对象,就会发现打印结果很丑。
这时 Python 标准库的 pretty printer 模块就可以发挥作用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。
pretty printer 模块:https://docs.python.org/3/library/pprint.html
Python 开发者的必备技能之一就是处理复杂的数据结构。
17.Queue
Python 支持多线程,而这是由 Python 标准库的 Queue 模块支持的。
该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的规则添加和检索条目。
『First in, first out』 (FIFO) 队列允许用户按照对象被添加的顺序来检索对象。『Last in, first out』 (LIFO) 队列允许用户首先访问最新添加的对象。
最后,优先级队列(priority queue)允许用户根据对象对应的优先级类别来检索对象。
如何使用 queue 在 Python 中实现多线程编程,示例详见:https://www.tutorialspoint.com/python3/python_multithreading.htm
18.repr
在 Python 中定义一个类别或对象时,以「官方」方式将对象表示为字符串很有用。例如:
这使代码 debug 变得简单很多。将字符串添加到类别定义,如下所示:
19.sh
Python 是一种伟大的脚本语言,不过有时使用标准 os 和 subprocess 库会有点棘手。
sh 库提供了一种不错的替代方案。
sh 库:http://amoffat.github.io/sh/
该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和任务非常有用。
20.类型提示(Type hints)
Python 是动态语言。在定义变量、函数、类别等时无需指定数据类型。
这有利于缩短开发周期。但是,简单的类型错误(typing issue)导致的运行时错误真的太烦了。
从 Python 3.5 版本开始,用户可以选择在定义函数时开启类型提示。
def addTwo(x : Int) -> Int:
return x + 2
你还可以定义类型别名:
尽管非强制,但类型注释可以使代码更易理解。
它们还允许你在运行之前使用类型检查工具捕捉 TypeError。在进行大型复杂项目时执行此类操作是值得的。
21.uuid
生成通用唯一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。
uuid 模块:https://docs.python.org/3/library/uuid.html
这创建了一个随机化后的 128 比特数字,该数字几乎必然是唯一的。
事实上,可以生成 2¹²²可能的 UUID。这个数字超过了 5,000,000,000,000,000,000,000,000,000,000,000,000。
在给定集合中找出重复数字的可能性极低。即使有一万亿 UUID,重复数字存在的概率也远远低于十亿分之一。
22.虚拟环境(Virtual environment)
这可能是 Python 中我最喜欢的事物了。
你可能同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那你要安装哪个版本呢?
幸运的是,Python 支持虚拟环境,这使得用户能够充分利用两种环境。见下列行:
现在你在一台机器上具备独立的多个 Python 版本了。问题解决!
23.wikipedia
Wikipedia 拥有一个很棒的 API,允许用户以编程方式访问巨大体量的免费知识和信息。
wikipedia 模块使得访问该 API 非常便捷。
Wikipedia 模块:https://wikipedia.readthedocs.io/en/latest/quickstart.html
和真实的维基百科网站类似,该模块支持多种语言、页面消歧、随机页面检索,甚至还具备 donate() 方法。
24.xkcd
humour 是 Python 语言的一个关键特征,其名称来自英国喜剧片《蒙提·派森的飞行马戏团》(Monty Python and the Flying Circus)。Python 的很多官方文档引用了该喜剧片最著名的剧情。
幽默感并不限于文档。试着运行下列行:
将打开 xkcd 画的 Python 漫画。不要改变这一点,Python。不要改变。
25.YAML
YAML 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。
与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。所以想学的同学,有必要听一下这位老师的课、领取python福利奥,想学的同学可以到梦雅老师的围鑫(同音):前边一组是:mengy ,后边一组是:7762,把以上两组字母按照先后顺序组合起来即可,她会安排学习的。
PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可以让你在 Python 中使用 YAML。安装:
然后导入到项目中:
PyYAML 使你能够存储任何数据类型的 Python 对象,以及任何用户定义类别的实例。
26.zip
给你支最后一招,非常酷。还在用两个列表来组成一部词典吗?
zip() 内置函数使用多个可迭代对象作为输入并返回元组列表。每个元组按位置索引对输入对象的元素进行分组。
你也可以通过调用*zip() 来「解压」对象。
选自FreeCodeCamp
喜欢记得来一个
这些Python代码技巧,你肯定还不知道相关推荐
- ae 能在linux上运行吗,玩了这么久Linux,这些使用技巧你可能还不知道!
玩了这么久Linux,这些使用技巧你可能还不知道! 上周与大家分享了30个Linux使用技巧,但是还不够!今天又总结了一些,在学习Linux的路上希望能帮到你. 上篇:30个必知的Linux命令技巧, ...
- python 代码-你见过哪些令你瞠目结舌的 Python 代码技巧?
在 Medium 上有篇叫<Python Tricks 101>的博文,介绍了一些不常见但很有用的 Python 技巧,集智进行了编译整理,原作者为 Gautham Santhosh. 交 ...
- python代码技巧_几个小技巧让你的Python代码更Pythonic
Python是一门非常灵活的语言,很多语法是其他语言不具备的,特别是对于从C.Java等语言转向Python的人来说,很容易按照C.Java等语言的写法来写Python,对于初学者来说,如果对Pyth ...
- python代码-你见过哪些令你瞠目结舌的 Python 代码技巧?
在 Medium 上有篇叫<Python Tricks 101>的博文,介绍了一些不常见但很有用的 Python 技巧,集智进行了编译整理,原作者为 Gautham Santhosh. 交 ...
- python代码技巧_让你python代码更快的3个小技巧
大家好!今天呢,我们来聊一聊如何加速你的 python 代码. Python 语言的优点可以列举出许多,语法简单易懂.模块丰富.应用广泛等等.但是世界上没有有完美的东西,python 一个明显缺点就是 ...
- python 字符串不区分大小写_还在吐槽文本字符串难以处理,Python的这个绝活你还不知道
我们之前的文章"玩转网络自动化之Netmiko模块"给大家介绍了网络自动化配置模块Netmiko,该模块通过SSH连接至设备然后把我们要执行的命令下发至设备,同时捕获命令回显. 由 ...
- ai python 代码提示插件_Python 还能实现哪些 AI 游戏?附上代码一起来一把!
人工智能作为当前热门在我们生活中得到了广泛应用,尤其是在智能游戏方面,有的已经达到了可以和职业选手匹敌的效果. 而DQN算法作为智能游戏的经典选择算法,其主要是通过奖励惩罚机制来迭代模型,来达到更接近 ...
- 我精心珍藏的Python代码技巧
01.****简洁的表达式 image 点评:Python因为简洁高效而出名,就是因为语法非常简单,而且内置了很多强大的数据结构: 比如我们可以大量用推导列表来生成很多简洁的代码 比如我们可以用if ...
- 提高订单成交率的九大技巧,你还不知道吗?
在做外贸的过程中,外贸业务员往往给客户发了订单后得不到回应,如何提高订单的成交率成了困扰外贸业务员的一大难题.下面介绍九大技巧仅供参考. 要提高订单的成交率,外贸业务员可采用以下九大技巧: 技巧一,让 ...
最新文章
- 奇奇怪怪的冒泡排序 TOJ 2014: Scramble Sort
- 改善C#程序的建议10:用Parallel简化Task
- java 英文分词器使用代码_java文本英文分词
- mvn 命令向本地仓库上传 jar
- python Image
- vue使用echarts错误Failed to mount component: template or render function not defined.
- 深入理解和使用nginx
- 线性代数 --- 矩阵求逆的4种方法
- mysql front的使用注意要点
- nginx ajax 504,内网配置错误引起的nginx 504 Connection timed out
- 提交代码时用prettier自动格式化
- 修改服务器连接数,服务器修改连接数
- 清华计算机系2018录取分数线,2018年清华大学各省录取分数线是多少?看看你离清华大学差多少分...
- Mac Docker Desktop “Mounts denied: EOF.“解决方法
- GBase 8s与Oracle对比分析
- DAP-LINK调试器资料收集
- 【知乎整理】云计算和虚拟机(VMWare)有什么区别?
- 如何利用群控做流量,手机群控引流方法有哪些
- chrome设置微信ua_用Chrome在电脑上模拟微信浏览器 - 雪山玉龙 - 博客园
- 太治愈了,这样调色照片更具电影感,LR预设3套
热门文章
- 当前主要使用的python版本_动力火车当歌词
- halcon获取图像中心点_关于Halcon的复杂图形中心点查找
- 平板电脑连接投影仪_苹果电脑如何连接投影仪 苹果Mac连接投影仪方法【详解】...
- python csv 排序_python数据清洗
- linux进程创建过程,Linux 进程创建过程的分析
- 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...
- mac 安装laravel Valet环境
- Android Studio3.2.1升级刨坑记录
- Laravel5.5执行 npm run dev时报错,提示cross-env找不到(not found)的解决办法
- Sharepoint COMException 0x81020037