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

Python 2.7:字符串格式与调用字符串外的变量?,python,python-2.7,Python,Python 2.7,我正在自学Python,除了字符串格式提供的额外格式选项(例如%r)之外,我看不出这两个示例之间有什么巨大的区别 name = "Bob" print "Hi, my name is %s." % name print "Hi, my name is", name 总的来说,你有什么理由喜欢其中一个而不是另一个? 我意识到.format()是现在做这件事的首选方法,但这只是为了让我更好地理解Python是如何运行的。这是编程的选择: 1) 使用%可以向代码的读者澄清类型,但是对于使用的每个附加

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

name = "Bob"
print "Hi, my name is %s." % name
print "Hi, my name is", name
总的来说,你有什么理由喜欢其中一个而不是另一个?
我意识到.format()是现在做这件事的首选方法,但这只是为了让我更好地理解Python是如何运行的。

这是编程的选择:

1) 使用%可以向代码的读者澄清类型,但是对于使用的每个附加变量,程序员需要花费时间在两个地方进行修改

2) 使用隐式地执行%,因此读者必须回过头来了解类型。但它很快,如果代码是直观地编写的,那么就可以省去很多维护工作量


因此,是的,这是一种在维护性、可读性和方便性之间保持平衡的选择。

这是一种编程选择:

1) 使用%可以向代码的读者澄清类型,但是对于使用的每个附加变量,程序员需要花费时间在两个地方进行修改

2) 使用隐式地执行%,因此读者必须回过头来了解类型。但它很快,如果代码是直观地编写的,那么就可以省去很多维护工作量


因此,是的,它是在维护、可读性和方便性之间保持平衡的选择。

区别在于逗号是print语句的一部分,而不是字符串的一部分。尝试在其他地方使用它(例如,将字符串绑定到名称)不会达到您的目的。

不同之处在于逗号是print语句的一部分,而不是字符串的一部分。尝试在其他地方使用它(例如,将字符串绑定到名称)并不能满足您的需要。

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

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


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

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

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


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

逗号
运算符在输出文本中隐式添加空格,但您可以使用
%
运算符控制此行为。我复制粘贴了您的代码,两个输出相同。逗号
运算符在输出文本中隐式添加空格,但您可以使用
%
运算符控制此行为。我复制粘贴了您的代码,两个输出相同。
print "Hi, my name is %s." % name
print "Hi, my name is", name