有人可以向我解释.format()方法发生了什么,它只能处理字符串声明,而不能处理包含字符串的变量吗?
下面是工作和失败代码的示例,后面跟着每个
的输出# This works fine
s = "{0} \n" \
"{1} \n" \
"{2}\n" \
.format("Hello", "world", "from a multiline string")
print(s)
# This does not
f = "{0} \n" \
"{1} \n" \
"{2}\n"
f.format("Hello", "world", "from a multiline string")
print(f)
各自的输出
Hello
world
from a multiline string
{0}
{1}
{2}
我试过这个,在大括号({}
)中没有数字,也没有通过分配名称({aname}
)和传递关键字参数。我想了解格式方法如何处理它们的第一个和第二个例子之间的区别,以及是否有一种方法来格式化包含与实际声明分开的字符串的变量。
答案 0 :(得分:6)
它正在工作,但你需要重新分配它,因为它不在原地(=它创建一个新的字符串对象,就像任何其他str
方法一样)。
f = "{0} \n" \
"{1} \n" \
"{2}\n"
f = f.format("Hello", "world", "from a multiline string")
print(f)
# Hello
# world
# from a multiline string
答案 1 :(得分:5)
因为.format
函数返回格式化的字符串。
它不会格式化它所调用的字符串,但会返回一个具有格式化结果的新字符串对象。