Python 2.7: % 字符串格式与在字符串外调用变量?

Python 2.7: % string format vs. calling variable outside string?

我正在自学 Python,除了字符串格式提供的额外格式选项(例如 %r)之外,我看不出这两个示例之间有什么巨大差异。

name = "Bob"
print "Hi, my name is %s." % name
print "Hi, my name is", name

一般来说,您有什么理由偏爱其中之一吗? 我意识到 .format() 是现在执行此操作的首选方法,但这只是为了让我更好地理解 Python 的运作方式。

编程选择:

1) 使用%明确了代码的reader的类型,但是对于使用的每一个额外的变量,程序员都需要花时间修改2 处

2) 使用 , 隐含地执行 % 所以 reader 将不得不回顾以了解他的类型。但它很快,如果代码是直观编写的,则可以消除很多维护负担

所以是的,它是在维护、可读性和便利性之间保持平衡的选择。

区别在于逗号是打印语句的一部分,而不是字符串的一部分。尝试在其他地方使用它,例如将字符串绑定到名称,将无法满足您的要求。

两者之间的主要区别(似乎没有其他人描述过)是:

print "Hi, my name is %s." % name

此处,新字符串 由两个字符串(字符串文字和 name 的值)构成。插值(% 运算符)是一种可以在任何地方使用的运算,例如,在变量赋值或函数调用中,而不仅仅是在 print 语句中。然后打印这个新生成的字符串(然后丢弃,因为没有给它命名)。

print "Hi, my name is", name

这里,两个字符串只是简单地一个接一个打印,中间有一个space。 print 语句完成了所有工作。没有执行字符串操作,也没有创建新字符串。