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

神译局2021-01-26
Python语言正在发展,你Out了吗?

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

译者:俊一

+1
12

好文章,需要你的鼓励

参与评论
登录后才能参与讨论哦...
后参与讨论
提交评论0/1000

请回复有价值的信息,无意义的评论将很快被删除,账号将被禁止发言。

文章提及的项目

下一篇

你以为自己在看新闻,其实新闻也在看你。

2021-01-26

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

为你推送和解读最前沿、最有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚集全球最优秀的创业者,项目融资率接近97%,领跑行业