1
sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)

「INSERTINTOProduct」にはなりませんが、「INSERT INTO {}」になるのはなぜですか?

4

2 に答える 2

5

Python3.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'
>>> 

どのバージョンを使用していますか?

追加の考え:

文字列は不変であり、インプレースで自己変更されません。多分あなたが望む:

sqlstring = sqlstring.format(table)

フォーマット文字列がその場で自己修正された場合、各フォーマット文字列は1回しか使用できないため、Pythonプログラマーにとっては非常に煩わしいものになります。場合によっては、適切なフォーマット文字列を作成して何百回も使用する機会が必要な場合があります。これはformat()、フォーマットをインプレースで変更する代わりに結果を返す場合に簡単です。

于 2011-12-01T00:08:20.470 に答える
5

format文字列を変更しません(文字列は不変であるため変更できません)。新しい文字列を返します。formatへの呼び出しの結果を割り当てる必要があります。

result = sqlstring.format(table)
于 2011-12-01T00:09:00.303 に答える