Python 格式最佳实践

Python Format Best Practices

我刚刚跟上 Python 的速度,并且有一个关于在字符串上使用 .format 的最佳实践(或至少是常见实践)的问题。

我的问题主要是关于何时使用空白大括号、索引号还是名称。

例如,如果您有一个变量想要包含在一个字符串中,您会做哪一个?

print "I {} Stack Overflow".format(var)
print "I {0} Stack Overflow".format(var)
print "I {verb} Stack Overflow".format(verb = var)

如果您要包含多个变量,这会改变吗?也许可以为单个变量包含 {},但不能为多个变量包含 {}?

如有任何想法或见解,我们将不胜感激。

谢谢!

一个或两个变量使用空大括号是可以的。我建议使用命名替换:

  • 更多变量
  • 在替换字符串难以阅读的情况下
  • 重复注入的变量时。

print " I {} Stack Overflow.".format(var) 是正确的方式。

如果您需要多个变量,您只需放置更多大括号并添加用逗号分隔的变量名称。

print "I {} Stack Overflow. It is a great {} {}!".format(var, var1, var3)

我认为(目前)还没有任何实践被确立为 "best" 甚至 "common",因此您会得到很多意见(包括我的意见:-)。

我认为 {named} 当您的格式字符串是一个变量(例如来自数据库或配置文件,根据用户选择的语言等选择)时,卷曲是可行的方法,因为它们让您挑选并选择要格式化的(命名的)参数、顺序、可能重复它们等等,同时保持可读性。

如果格式字符串是文字,空卷曲 {} 最不突兀,因此最终可能最易读——除非你的格式字符串有 "too many" 个,当然是一种风格判断。

至少这是一个风格问题,与您每次定义或调用函数时所面临的问题非常相关——任何位置参数或参数如何 "too many" 以提高可读性,如果您全力以赴命名仅参数和参数,等等。类似的注意事项适用!

我知道这是一个老问题,但是 Python 3.6 带来了一个非常酷的字符串格式,叫做 "f-strings"。它类似于 Javascript。这是一个简单的例子:

name = "John"
age = 25

print(f"My name is {name} and I am {age} years old.")

它仅适用于 Python 3.6 及更高版本,但我认为这是在 Python.

中格式化字符串的最简单且更易读的方法