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

Dav*_*ave 0 python string format python-3.x

有人可以向我解释.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)
Run Code Online (Sandbox Code Playgroud)

各自的产出

Hello 
world 
from a multiline string

{0} 
{1} 
{2}
Run Code Online (Sandbox Code Playgroud)

我试过这个,在braces({})中没有数字,也没有通过赋值({aname})和传递关键字参数.我想了解格式方法如何处理它们的第一个和第二个例子之间的区别,以及是否有一种方法来格式化包含与实际声明分开的字符串的变量.

Dee*_*ace 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
Run Code Online (Sandbox Code Playgroud)


har*_*968 5

因为.format函数返回格式化的字符串.

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