Это ошибка Python 3 в str.format? - PullRequest
0 голосов
/ 01 декабря 2011
sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)

не приводит к «INSERT INTO Product», но все еще «INSERT INTO {}», почему это так?

Ответы [ 2 ]

5 голосов
/ 01 декабря 2011

format не изменяет строку (это невозможно, потому что строки неизменны).Возвращает новую строку.Вам необходимо присвоить результат звонка в формате:

result = sqlstring.format(table)
5 голосов
/ 01 декабря 2011

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)

Если строки форматирования самоизменяются сами по себе, это будет довольно раздражающим для программистов на Python, поскольку каждая строка формата может использоваться только один раз. Иногда нам нужен шанс создать красивую строку формата, а затем использовать ее сотни раз - это легко, если format() возвращает результат вместо изменения формата на месте.

...