これはstr.formatのPython 3バグですか?
-
26-10-2019 - |
質問
sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)
「製品を挿入する」ことはありませんが、それでも「{}に挿入されます」なぜそんなにそうなのですか?
解決
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'
>>>
どのバージョンを使用していますか?
追加の考え:
文字列は不変であり、内容を自己修正しません。多分あなたは欲しい:
sqlstring = sqlstring.format(table)
フォーマット文字列が自己修復された場合、各フォーマット文字列は1回しか使用できないため、Pythonプログラマーにとっては非常に迷惑です。時々、素敵なフォーマット文字列を構築してから何百回も使用する機会が必要な場合があります。 format()
フォーマットを内容を変更する代わりに、結果を返します。
他のヒント
format
文字列を変更しません(文字列が不変であるためにはできません)。新しい文字列を返します。フォーマットへの呼び出しの結果を割り当てる必要があります。
result = sqlstring.format(table)
所属していません StackOverflow