Python3.8 新特性:f-strings调试

By 刘志军, 2019-10-21, 分类: Python技术

python3.8

f-strings调试

这是Python3.8新特性的第三篇,第一篇介绍了Python3.8 新特性:赋值表达式,第二篇是Python3.8 新特性:仅位置参数。这篇文章介绍f-strings调试功能。

f-strings 是Python3.6中的新特性,Python3.8 中 f-strings 开始支持“=”操作,主要作用是方便用于调试。它的语法是:f'{expr=}' 。

写Python代码,我大部分时候都会用 print 函数调试,因为简单方便,如pdb、pycharm的断点调试功能只在少数特殊场景下才会使用。使用print 函数有什么问题呢?

在代码很长的复杂场景,你可能要打印好几个值,例如:

name1 = "zhang"
name2 = "li"
name3 = "wang"
print(name1)
print(name2)
print(name3)

输出:

zhang
li
wang

从输出结果来看,我们不知道哪个值对应的是哪个变量,在代码行数少的时候还能通过看源代码分辨出来,如果代码量很长很长时,就很容易搞混,不知你有没有遇到过,反正我经常为了区分谁是谁,打印时要加奇形怪异的特殊字符。

当然,在 print 时直接把变量名字打印出来是最直白的。

name1 = "zhang"
name2 = "li"
name3 = "wang"
print(f"name1={name1}")
print(f"name2={name2}")
print(f"name3={name3}")

输出:

name1=zhang
name2=li
name3=wang

​为了调试方便,python3.8在f-strings中可以使用等号“=”,打印出来时,等号左边就是变量的名字,右边是对应的值。

name1 = "zhang"
name2 = "li"
name3 = "wang"
print(f"{name1=}")
print(f"{name2=}")
print(f"{name3=}")

输出:

name1=zhang
name2=li
name3=wang

再举个例子:

>>> now = datetime.datetime.now()
>>> print(f"{now.day=}")
now.day=21

这个特性,可以省出几秒钟时间陪女朋友。


有问题可以扫描二维码和我交流

关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅

猜你喜欢

2019-10-17
Python3.8 新特性:赋值表达式
2019-10-18
Python3.8 新特性:仅位置参数