适当使用python3格式功能

时间:2019-04-15 21:27:01

标签: python-3.x

我看到了下面的代码适当性示例。

for (i in 0 until stack.size)  # bad
while (!stack.isEmpty)  # good

从这个角度来看,我所遇到的最好的代码是什么。

在Byte-of-python中,据说format函数可以简化代码,但我想知道鲁re使用是否更有害。

START_TIME = time.time()
time.sleep(1)
END_TIME = time.time()

print("spend time : {time}".format((END_TIME - START_TIME) = 'time') 
# Why is this a grammatical error?

print("spend time : " + str(END_TIME - START_TIME ))

2 个答案:

答案 0 :(得分:2)

您的print语句末尾缺少方括号,这是正确的语法:

print("spend time : {time}".format(time = END_TIME - START_TIME))

请注意,您可以将其简化为:

print("spend time : {}".format(END_TIME - START_TIME))

或使用f-strings

print(f"spend time : {END_TIME - START_TIME}")

出于可读性考虑,通常首选使用format()或f字符串而不是字符串连接。它还允许您组合不同的数据类型,而不必先将它们转换为字符串。

答案 1 :(得分:1)

str.format方法提供了代码的可读性,尤其是当您需要在字符串中间插入内容时。假设您要构造一个字符串,该字符串显示为“今天的天气为{sun_status},最高气温为{high_temp},最低气温为{low_temp},降雨的可能性为{percip_chance}%”。使用字符串连接将其写出来非常难看。

s1 = "The weather is " + sun_status + " today with a high of " + str(high_temp) + ", a low of " + str(low_temp) + ", and a " + str(percip_chance) + "% chance of rain."

str.format方法可以解决此问题,并为您处理所有str类型转换(如果需要)

s1 = "The weather is {sun_status} today with a high of {high_temp}, a low of {low_temp}, and a {percip_chance}% chance of rain"\
     .format(sun_status=sun_status, 
             high_temp=high_temp,
             low_temp=low_temp, 
             percip_chance=percip_chance)

您的代码中也存在错误。调用str.format方法时,关键字可以是放在大括号{}中的任何关键字,并且不包含在字符串中。它也必须排在第一位。

print("spend time : {time}".format(time = (END_TIME - START_TIME)))