1

我只是想知道为什么使用 %s 而不是直接调用变量例如:

playername = "george" 

print "my name is %s" % playername
print "my name is", playername

直接调用变量要短一些,而且它们都打印相同的结果,所以如果我放弃使用 %,有什么我还没有学到的东西会回来咬我吗?

4

4 回答 4

6

在您提到的情况下,您可以两者都做,没有理由不根据个人喜好。

但是,当前的 python 标准规定您实际上应该这样做:

print("my name is {}".format(playername))

或由于先前两种方法的易错性而类似。错过空格、定义类型错误等的机会。

这是相关的 PEP,其中包含一些很好的理性和示例。

于 2013-09-10T23:08:24.653 回答
2

在这种情况下,这两种方式本质上是相同的。我也会采用第二种方式 :-) 但是更高级的格式化结构在更高级的环境中绝对有用——无论哪种方式更容易阅读。在最近的 Python 中,还有:

print "my name is {}".format(playername)

这种方式比“%”格式更灵活,更不容易出错。都是好时光 ;-)

于 2013-09-10T23:09:00.703 回答
1

在这种特定情况下,最大的原因是它"my name is %s" % playername为您提供了一个字符串,然后您可以操作、返回或以其他方式处理该字符串。您可以替换printreturn并使其保持不变。

这根本不是什么大区别,但这就是您可能希望以这种方式构建输出的原因。

于 2013-09-10T23:10:24.517 回答
0

我在某处读到使用 %s 替换实际上更有效,但我不知道这是否属实。

养成这种习惯的一个原因是,如果 playername 更改为某个类的对象,第一行仍然有效(假设该类已实现__str__()),而第二行不会给您期望的结果。

于 2013-09-10T23:05:05.240 回答