为什么.format()不能与声明分开使用?

时间:2018-05-14 09:17:03

标签: python string python-3.x format

有人可以向我解释.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})和传递关键字参数。我想了解格式方法如何处理它们的第一个和第二个例子之间的区别,以及是否有一种方法来格式化包含与实际声明分开的字符串的变量。

2 个答案:

答案 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函数返回格式化的字符串。

它不会格式化它所调用的字符串,但会返回一个具有格式化结果的新字符串对象。