python:为什么使用%s而不是直接调用变量

时间:2013-09-10 23:01:52

标签: python

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

playername = "george" 

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

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

4 个答案:

答案 0 :(得分:6)

如果您提到您可以同时执行这两项操作,则没有理由不根据个人喜好进行操作。

然而,当前的python标准规定你应该这样做:

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

或类似由于两种先前方法的容易出错的性质。有可能错过空格,定义错误的类型等等。

这是relevant PEP,其中包含一些很好的理性和例子。

答案 1 :(得分:2)

在这种情况下,这两种方式基本相同。我也是第二种方式:-)但是更高级的格式化构造在更高级的上下文中肯定是有用的 - 无论哪种方式更容易阅读。在最近的Pythons中,还有:

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

与“%”格式相比,这种方式更灵活,更不容易出错。一切都很顺利; - )

答案 2 :(得分:1)

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

这根本不是什么大不同,但它是 的原因,你可能希望以这种方式构建输出。

答案 3 :(得分:0)

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

养成这种习惯的一个原因是,如果玩家名称变为某个类的对象,则第一行仍然有效(假设该类已实现__str__())而第二行不会给你什么期望的。