4

2021 年你应该学会的 5 个 Python 小技巧

 3 years ago
source link: https://www.36kr.com/p/1068354873813120
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:近年来,Python已经取代Java成为高校中最受欢迎的编程语言,甚至还有许多不做编程工作的人士,也在开始在学习Python语言,来实现网络爬虫以及辅助投资理财等目的。这篇文章,原标题是5 Python Tricks You Should Start Using in 2021,作者Roman Orac在文章中跟大家分享了5个Python小技巧,希望对你的工作和学习有所帮助。

nMb2uae.jpg!mobile

图片来源:Pexels.com

我们已经走进了2021年。新的一年,大家都有新年目标。对大多数人而言,更好地学习和运用Python语言,也应该成为其最实用的新年目标之一。

在这篇文章中,我将跟大家分享5个Python小技巧。掌握这些小技巧后,你的生活也会变得更加简单。

懒人目录

  • 如何更清楚地格式化大整数?

  • IPython中的魔法命令是什么?

  • 调试代码的简单方法

  • 处理文件路径的更佳方法

  • 字符串格式化的正确方法

1.  数值常量中的下划线

UfeEbiq.png!mobile

在数值常量中使用下划线。图片来源: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中的魔法命令

mURrM3j.png!mobile

通过%paste命令把代码粘贴到IPython解释器中。图片来源:Roman Orac

我在用Python开发时,在工作流程中,我会将neovim的终端面板放在左边, IPython解释器放在右边。

由于我可以从左边将代码复制出来,然后直接粘贴到右边的解释器上,这也让代码测试变得更加容易。

什么是IPython解释器?

它类似于Python解释器,不过功能更加强大。

IPython是用多编程语言来交互计算的命令外壳,最开始是专为Python编程语言而开发的。同时,它还提供了内省,丰富的媒体,shell语法,tab自动补全,以及历史命令查看等内容。

将代码从剪贴板粘贴到IPython解释器的最简单方法是什么呢?

你知道IPython支持魔法命令吗?

魔法命令其中就包括%paste命令,它可以将剪贴板上的代码连同格式一起粘贴。

要使用这个命令,你只需要在IPython解释器中键入%paste即可。

3.  调试Python代码

jqUrMjn.png!mobile

使用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

e2iIveI.jpg!mobile

图片来源: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.  简化字符串格式化

uma6FnI.png!mobile

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,并不是真的。:joy:

格式化浮点数又是怎样的呢?

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编程会变得轻松很多。

译者:俊一


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK