LINUX.ORG.RU

История изменений

Исправление praseodim, (текущая версия) :

Для тебя «контринтуитивно» что переменная должна быть инициализирована прежде чем использована? Ну тогда у меня для тебя плохие новости.

Нет, контринтуитивно не это, а то что в коде

s = {i: 0 for i in list}  
s = {i: s[i]+1 for i in list}
s[i]+1

делает совсем не то, что ожидалось на первый взгляд.

Хотя и насчет инициализации, не все так просто. Раз уж питон автоматически создает переменные при первом присвании, кроме того, например, в Perl конструкции $hash($i)++ вполне нормально работает для еще не использованного ключа и делает ровно то, что ожидается. Еще попадались контринтуитивные вещи со слайсами и с увеличением/уменьшением размерности массивов.

Исходная версия praseodim, :

Для тебя «контринтуитивно» что переменная должна быть инициализирована прежде чем использована? Ну тогда у меня для тебя плохие новости.

Нет, контринтуитивно не это, а то что в коде

s = {i: 0 for i in list}  
s = {i: s[i]+1 for i in list}

s+1 делает совсем не то, что ожидалось на первый взгляд.

Хотя и насчет инициализации, не все так просто. Раз уж питон автоматически создает переменные при первом присвании, кроме того, например, в Perl конструкции $hash($i)++ вполне нормально работает для еще не использованного ключа и делает ровно то, что ожидается. Еще попадались контринтуитивные вещи со слайсами и с увеличением/уменьшением размерности массивов.