我只是想知道为什么使用%s而不是直接调用变量ex:
playername = "george"
print "my name is %s" % playername
print "my name is", playername
直接调用变量是一个更短的时间,它们都打印相同的结果,所以有一些我还没有学到的东西,如果我放弃使用%,它会回来咬我吗?
答案 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__()
)而第二行不会给你什么期望的。