这是str.format上的Python 3错误吗?

LEM*_*ANE 1 python cpython python-3.x python-3.2

sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)
Run Code Online (Sandbox Code Playgroud)

不会导致'INSERT INTO产品'但仍然'INSERT INTO {}'为什么会这样?

Bra*_*des 5

Python 3.2正确执行此操作:

$ python3.2
Python 3.2.2 (default, Sep  5 2011, 22:09:30) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> sqlstring = 'INSERT INTO {}'
>>> table = 'Product'
>>> sqlstring.format(table)
'INSERT INTO Product'
>>> 
Run Code Online (Sandbox Code Playgroud)

你用的是什么版本?

额外的想法:

字符串是不可变的,不能就地进行自我修改.也许你想要:

sqlstring = sqlstring.format(table)
Run Code Online (Sandbox Code Playgroud)

如果格式字符串自行修改它们对Python程序员来说非常烦人,因为每个格式字符串只能使用一次.有时我们希望有机会构建一个漂亮的格式字符串,然后使用它数百次 - 如果format()返回结果而不是就地修改格式,这很容易.


Mar*_*ers 5

format不修改字符串(它不能因为字符串是不可变的).它返回一个新字符串.您需要将调用结果分配给格式:

result = sqlstring.format(table)
Run Code Online (Sandbox Code Playgroud)