Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2008 02:04:30

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

locals, globals и странности.

Итак, есть код.

m = [1,-2,3,0,-1,0,2,-3]
print reduce(lambda x, y: globals().__setitem__("k", globals().get("k", 1) + 1) or k, m)
del k
Возвращает количество элементов в любом итерируемом объекте m.
Ненадо меня отправлять на три буквы, первыя из которых “L”.lower(), мне нужно лишь понять, почему если поменять globals на locals, оно перестаёт наботать. Есть у кого какие-нить мысли?



Офлайн

#2 Ноя. 28, 2008 02:55:20

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

locals, globals и странности.

locals( )

Warning: The contents of this dictionary should not be modified; changes may not affect the values of local variables used by the interpreter.



Офлайн

#3 Ноя. 28, 2008 03:16:20

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

locals, globals и странности.

Хм… А почему globals править можно? Бред какой-то!
Или хотябы исключение вызывал, при попытке изменить… Но тогда возвращать должен не простой словарь…



Офлайн

#4 Ноя. 29, 2008 01:30:37

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

locals, globals и странности.

Мнэээ… © кот Василий (Братья Стругацкие)
Я понял, это намёк… Я всё ловлю на лету… Но не понятно, что конкретно вы имели в виду…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version