![](/img/trans.png)
[英]What is the most pythonic way to reuse data in multiple calls to same function?
[英]What is the most pythonic way to avoid specifying the same value in a string
message = "hello %s , how are you %s, welcome %s"%("john","john","john")
什么是避免指定“john”3次而是指定一个短语的最pythonic方法。
我不会使用%
格式, .format
有很多优点。 此外, %
格式化最初计划在.format
替换它时被删除,尽管显然这实际上并没有发生。
用于内置字符串格式化操作的新系统取代了
%
字符串格式化操作符。 (但是,%
运算符仍然受支持;它将在Python 3.1中弃用,稍后将从语言中删除。)阅读PEP 3101以获取完整的独家新闻。
>>> "hello {name}, how are you {name}, welcome {name}".format(name='john')
'hello john, how are you john, welcome john'
我更喜欢第一种方式,因为它是显式的,但这就是为什么.format
优于%
格式的原因
>>> "hello {0}, how are you {0}, welcome {0}".format('john')
'hello john, how are you john, welcome john'
"hello %(name)s , how are you %(name)s, welcome %(name)s" % {"name": "john"}
'hello john, how are you john, welcome john'
这是另一种不使用格式的方法。
这也有效:
"hello %s , how are you %s, welcome %s"%tuple(["john"]*3)
甚至更短,没有明确的类型转换:
"hello %s , how are you %s, welcome %s"%(("john",)*3)
99%的可能你应该使用.format()
这不太可能,但如果你有一系列的问候,你可以试试这个:
>>> greetings = ["hello", "how are you", "welcome"]
>>> ", ".join(" ".join((greet, "John")) for greet in greetings)
'hello John, how are you John, welcome John'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.