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

时间:2015-01-04 05:15:40

标签: python python-2.7

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

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

一般来说,为什么你更喜欢一个而不是另一个? 我意识到.format()是现在首选的方法,但这只是为了让我更好地理解Python的运作方式。

3 个答案:

答案 0 :(得分:3)

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

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

这里,从两个字符串(字符串文字和name的值)构造新字符串。插值(%运算符)是您可以在任何地方使用的操作 - 例如,在变量赋值或函数调用中 - 不仅仅在print语句中。然后打印这个新创建的字符串(然后丢弃,因为它没有给出名称)。

print "Hi, my name is", name

这里,两个字符串简单地一个接一个地打印,其间有空格。 print语句正在完成所有工作。不执行任何字符串操作,也不会创建新字符串。

答案 1 :(得分:1)

这是编程选择:

1)使用向代码的读者说明类型,但对于使用的每个其他变量,程序员需要花时间在2个地方进行修改

2)使用隐式执行,以便读者必须回头了解他的类型。但它很快,如果直观地编写代码,则会消除大量的维护工作

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

答案 2 :(得分:1)

不同之处在于逗号是print语句的一部分,而不是字符串。试图在别处使用它,例如将字符串绑定到名称,将无法执行您想要的操作。