2021 年你应该学会的 5 个 Python 小技巧
神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:近年来,Python已经取代Java成为高校中最受欢迎的编程语言,甚至还有许多不做编程工作的人士,也在开始在学习Python语言,来实现网络爬虫以及辅助投资理财等目的。这篇文章,原标题是5 Python Tricks You Should Start Using in 2021,作者Roman Orac在文章中跟大家分享了5个Python小技巧,希望对你的工作和学习有所帮助。
图片来源:Pexels.com
我们已经走进了2021年。新的一年,大家都有新年目标。对大多数人而言,更好地学习和运用Python语言,也应该成为其最实用的新年目标之一。
在这篇文章中,我将跟大家分享5个Python小技巧。掌握这些小技巧后,你的生活也会变得更加简单。
懒人目录
如何更清楚地格式化大整数?
IPython中的魔法命令是什么?
调试代码的简单方法
处理文件路径的更佳方法
字符串格式化的正确方法
1. 数值常量中的下划线
在数值常量中使用下划线。图片来源:Roman Orac
从Python 3.6版本开始,你都可以通过添加下划线“_”的方式,让数字更具可读性。
例如:
a = 1000000000
# 这个变量是十亿还是一亿?
# 让我们借助下划线来更简单地认识这个数字
a = 1_000_000_000
# 你可以按照自己的方式给数字分组
b = 1_0_9_0
这种方式也能用来处理十六进制地址和分组比特。
# 用字来分组十六进制地址
addr = 0xCAFE_F00D
# 在二进制常量中将比特分组成半字节。
flags = 0b_0011_1111_0100_1110
2. IPython中的魔法命令
通过%paste命令把代码粘贴到IPython解释器中。图片来源:Roman Orac
我在用Python开发时,在工作流程中,我会将neovim的终端面板放在左边, IPython解释器放在右边。
由于我可以从左边将代码复制出来,然后直接粘贴到右边的解释器上,这也让代码测试变得更加容易。
什么是IPython解释器?
它类似于Python解释器,不过功能更加强大。
IPython是用多编程语言来交互计算的命令外壳,最开始是专为Python编程语言而开发的。同时,它还提供了内省,丰富的媒体,shell语法,tab自动补全,以及历史命令查看等内容。
将代码从剪贴板粘贴到IPython解释器的最简单方法是什么呢?
你知道IPython支持魔法命令吗?
魔法命令其中就包括%paste命令,它可以将剪贴板上的代码连同格式一起粘贴。
要使用这个命令,你只需要在IPython解释器中键入%paste即可。
3. 调试Python代码
使用IPDB调试Python代码。图片来源:Roman Orac。图示高亮工具:Carbon.sh
PyCharm编辑器拥有用于Python代码的内置调试器。不过,如果你使用的是Visual Studio Code,Atom,Sublime或者Vim编辑器的话,又该怎么办呢?
你可以使用pdb模块:
foo()
import pdb; pdb.set_trace()
# 代码运行到这里会暂停,然后会启动解释器
bar()
Python3.7及以上的版本可以调用内置的breakpoint()函数来简化这一点:
foo()
breakpoint()
# 代码运行到这里会暂停,然后会启动解释器
bar()
4. 路径处理库Pathlib
图片来源:Alice Donovan Rouse on Unsplash
处理路径极具挑战,特别是代码需要在多个操作系统上运行的情况下。
不过,幸运的是,Python标准库中有pathllib这个路径处理库。
让我们看一个例子:
from pathlib import Path
path = Path("some_folder")
print(path)
# 输出:some_folder
# 我们可以通过一种可读的方式添加更多子文件
path = path / "sub_folter" / "sub_sub_folder"
print(path)
# 输出:some_folder/sub_folter/sub_sub_folder
# 让路径绝对化
print(path.resolve())
# 输出:/Users/r.orac/some_folder/sub_folter/sub_sub_folder
5. 简化字符串格式化
Python中的f-string格式化。图片来源:Roman Orac
我习惯于在Python中使用老派的字符串格式化:
person = 'Roman'
exercise = 0
print("%d-times %s exercised during corona epidemic" % (exercise, person))
# 输出:0-times Roman exercised during corona epidemic
直到前不久,我才知道Python中有一种更好的(更现代的)字符串格式化方式。
在Python3.6版本中,PEP 498提出了Literal String Interpolation字符串插值,从而简化了字符串格式化。
对于上述例子,我们可以重写如下:
person = 'Roman'
exercise = 0
print(f"{exercise}-times {person} exercised during corona epidemic")
# 输出:0-times Roman exercised during corona epidemic
以f为前缀的字符串即被称为fstring。
fstring甚至可以支持数学运算:
print(f"{exercise+1}-times {person} exercised during corona epidemic")
# 输出:'1-times roman exercised during corona epidemic'
然而,在新冠疫情期间,我并没有运动。所以用fstring+1,并不是真的。😂
格式化浮点数又是怎样的呢?
f = 0.333333
print(f"this is f={f:.2f} rounded to 2 decimals")
# 输出:this is f=0.33 rounded to 2 decimals
写在最后
许多Python开发者都不知道这几个小技巧。如果你学会使用这些小技巧,那你就会比他们多掌握一些小技巧。
过去十年以来,我一直在使用Python语言编程,但我不久前才了解并学会使用这些方法。
掌握这五个Python小技巧,Python编程会变得轻松很多。
译者:俊一
本文来自翻译, 如若转载请注明出处。