这样做的好习惯是什么:
代替:
print "%s is a %s %s that %s" % (name, adjective, noun, verb)
我希望能够做一些事情:
print "{name} is a {adjective} {noun} that {verb}"
"{name} is a {adjective} {noun} that {verb}".format(**locals())
locals()
给出对当前命名空间的引用(作为字典)。**locals()
将该字典解压缩为关键字参数(f(**{'a': 0, 'b': 1})
is f(a=0, b=1)
)。.format()
是“新的字符串格式”,顺便说一句,它可以做更多的事情(例如{0.name}
,对于第一个位置参数的名称属性)。或者,string.template
(再次,如果你想避免多余的{'name': name, ...}
字典文字,使用本地人)。
从 Python 3.6 开始,您现在可以使用这种称为 f-strings 的语法,这与您 9 年前的建议非常相似
print(f"{name} is a {adjective} {noun} that {verb}")
f-strings 或格式化的字符串文字将使用它们所使用的范围内的变量,或其他有效的 Python 表达式。
print(f"1 + 1 = {1 + 1}") # prints "1 + 1 = 2"
>>> from string import Template
>>> t = Template("$name is a $adjective $noun that $verb")
>>> t.substitute(name="Lionel", adjective="awesome", noun="dude", verb="snores")
'Lionel is a awesome dude that snores'
对于 python 2 做:
print name,'is a',adjective,noun,'that',verb
对于 python 3 添加括号:
print(name,'is a',adjective,noun,'that',verb)
如果需要将其保存为字符串,则必须与+
运算符连接,并且必须插入空格。 print
插入一个空格,,
除非参数末尾有逗号,在这种情况下它放弃换行符。
要保存到字符串 var:
result = name+' is a '+adjective+' '+noun+' that '+verb