我正在自学Python,除了字符串格式提供的额外格式化选项(例如。%r)之外,看不出这两个示例之间的巨大差异。
name = "Bob"
print "Hi, my name is %s." % name
print "Hi, my name is", name
一般来说,为什么你更喜欢一个而不是另一个? 我意识到.format()是现在首选的方法,但这只是为了让我更好地理解Python的运作方式。
答案 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语句的一部分,而不是字符串。试图在别处使用它,例如将字符串绑定到名称,将无法执行您想要的操作。