Сегодня ловлю баг в сервисе - в JSON-результате вместо поля с integer выдается список элементов-integer, то есть вместо
упорно получаю
Перепроверяю код 20 раз - ничего не могу понять... вроде все правильно, должен быть идентификатор ОДИН, но хоть ты тресни - список. Подвисаю на несколько минут, иду попить кофе, снова смотрю в код...
Правлю один символ - все работает. После хохота начинаю вспоминать хорошего PHP team-leader, с которым работал много-много лет назад.
Он был большим аккуратистом в плане чистоты форматирования кода и железнобетонно приучил меня расставлять меня запятые в ассоциативных массивах в КАЖДОМ элементе, включая последний. Так как в случае необходимости быстро переставить элементы в коде - не пришлось бы искать потенциальную ошибку c пропущенной запятой.
А для Python - это собственно - сокращенный формат списка-последовательности.
Так что вот вам прекрасный пример того, что старые привычки часто вредят, а иногда - вредят ОЧЕНЬ сильно. "Казнить нельзя помиловать" (с) ;-)
Ну и верный вариант - БЕЗ запятой ;-)
data : { 'id' : 1 }
упорно получаю
data : { 'id' : [1] }
Перепроверяю код 20 раз - ничего не могу понять... вроде все правильно, должен быть идентификатор ОДИН, но хоть ты тресни - список. Подвисаю на несколько минут, иду попить кофе, снова смотрю в код...
Через несколько минут доходит - начинаю истерически хохотать
def bla-bla(self, args): data = { 'bla-bla' : bla_bla, 'name' : name, 'id' : temp_id, } return data
Правлю один символ - все работает. После хохота начинаю вспоминать хорошего PHP team-leader, с которым работал много-много лет назад.
Он был большим аккуратистом в плане чистоты форматирования кода и железнобетонно приучил меня расставлять меня запятые в ассоциативных массивах в КАЖДОМ элементе, включая последний. Так как в случае необходимости быстро переставить элементы в коде - не пришлось бы искать потенциальную ошибку c пропущенной запятой.
А для Python - это собственно - сокращенный формат списка-последовательности.
Так что вот вам прекрасный пример того, что старые привычки часто вредят, а иногда - вредят ОЧЕНЬ сильно. "Казнить нельзя помиловать" (с) ;-)
Ну и верный вариант - БЕЗ запятой ;-)
def bla-bla(self, args): data = { 'bla-bla' : bla_bla, 'name' : name, 'id' : temp_id } return data
Что-то, Миш, у тебя в версии питона, видимо, баг.
ОтветитьУдалитьСокращённый вариант последовательности это "(1,)", а не "1,". Заптая в списках работает вполне хорошо и я ни разу не встречал описываемого тобой. Единственная теория, повторюсь, — баг в конкретной версии питона.
>>> type({'test':2,'id':1,}["id"])
Гриш, на трех машинах проверено, сейчас специально под Lion - не баг, листинг ниже
Удалить$ python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> r = 1
>>> t = r,
>>> t
(1,)
>>>
возвращает int (тегорезка отрезала)
ОтветитьУдалитьСо словарём не получается повторить. Пробовал на 2.5 и 2.6:
ОтветитьУдалить>>> 1,
(1,)
>>> {'test':2,'id':1,}["id"]
1
Да, в таком варианте не проходит, но с присвоением переменных - как выше - получается...
Удалить"It's a magic" (c) ;-)