-
В следствие чего в питоне принято делать так
а не такdef makeCounter():
num = 0
def count(x):
nonlocal num
num += 1
print num
return count
Какой из пунктов философии питона тут причина?function counter(){
var x=0
return function(){
x++
alert(x)
}
}
Мне ясно, что дизайн языка реализующийся, именно 1-м примером возник не просто так, но я не до конца уверен, что знаю правильный ответ, хотя я его знаю :)
Хочется услышать ответ агрессивного модератора Александра Кошелева :) -
Я до конца не уверен, что не я Алесандр Кошелев, хотя я знаю это. Но скажу, что мягкий питон входит безболезненне всяких там рельс. Хотя подготовленный жс-ом мозг может уже и не ощутить разницы.
-
Поправлюсь
Особенно хочется услышать ответ агрессивного модератора Александра Кошелева :)
В вашем сообщении ответа не увидел :)
-
Какой толстый тролль...
In [1]: def make_counter(i=0): ...: while True: ...: i += 1 ...: yield i ...: In [2]: counter = make_counter().next In [3]: counter() Out[3]: 1 In [4]: counter() Out[4]: 2 In [5]: counter() Out[5]: 3 In [6]: counter() Out[6]: 4Чем не пайтон-вей?
А еще есть вариант с использованием xrange:
counter = xrange(1, 100500).__iter__().next -
Это классический вопрос про аккумулятор на Питоне, подробно разобран у Пола Грэхема начиная с заголовка "Appendix: Power".
P.S. При всей интересности вопроса, этот форум всё таки не про Питон в целом.
-
этот форум всё таки не про Питон в целом.Не флуда ради, но понимания и сравнения для. Пол Грехем потом привел целый список из аккумуляторов на разных языках: http://www.paulgraham.com/accgen.html
-
Имхо тут больше всего русскоговорящих питонистов высокой квалификации.
Ясно.
Because Python doesn't fully support lexical variables, you have to create a data structure to hold the value of n.
Python users might legitimately ask why they can't just write Здесь форма без извращений and my guess is that they probably will, one day.
Из прочитаного - Суть в том, что изначально этот момент не продумывался, а потом было уже поздно. На такое глобальное изменение дизайна автор не пошел. Как результат костыль nonlocal.
Или решение было принято осознано, дабы уменьшить число побочных эффектов и ключевых слов?
Вот эти два абзаца выше и есть вопрос. Не как оно работает, а почему.
2) Как спросить архитектора языка я не знаю к сожалению. На английском в гугле найти не удалось. Может здесь кто-то знает, потому и задал.
Еще один вопрос - является ли запуск внешних бинарников в linux/bsd блокирующим для GIL? Кто-нибудь сталкивался?
Хочу в джанго-демоне мультиплексировать работу с qmail тредами. (почти все реализуется утилитами vadddomain, vaadduser, ...)
Процессами дорого по памяти, пулом процессов сложнее в реализации, ну а state machine не подходит по определению.
-
Спросить Гвидо можно в рассылке разработчиков python-list/Python-Help/python-dev
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.



