1. Анонимус

    17.12.2009

    1 ↑
    0 ↓
    В следствие чего в питоне принято делать так
    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-м примером возник не просто так, но я не до конца уверен, что знаю правильный ответ, хотя я его знаю :)

    Хочется услышать ответ агрессивного модератора Александра Кошелева :)
  2. Imbolc

    17.12.2009

    0 ↑
    1 ↓

    Я до конца не уверен, что не я Алесандр Кошелев, хотя я знаю это. Но скажу, что мягкий питон входит безболезненне всяких там рельс. Хотя подготовленный жс-ом мозг может уже и не ощутить разницы.

  3. Анонимус

    17.12.2009

    0 ↑
    0 ↓

    Поправлюсь

    Особенно хочется услышать ответ агрессивного модератора Александра Кошелева :)

    В вашем сообщении ответа не увидел :)

  4. denger

    17.12.2009

    0 ↑
    0 ↓

    Какой толстый тролль...

    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
    
  5. Иван Сагалаев

    17.12.2009

    0 ↑
    0 ↓

    Это классический вопрос про аккумулятор на Питоне, подробно разобран у Пола Грэхема начиная с заголовка "Appendix: Power".

    P.S. При всей интересности вопроса, этот форум всё таки не про Питон в целом.

  6. hardtop

    18.12.2009

    0 ↑
    0 ↓
    этот форум всё таки не про Питон в целом.
    Не флуда ради, но понимания и сравнения для. Пол Грехем потом привел целый список из аккумуляторов на разных языках: http://www.paulgraham.com/accgen.html
  7. Анонимус

    18.12.2009

    0 ↑
    1 ↓

    Имхо тут больше всего русскоговорящих питонистов высокой квалификации.

    Ясно.

    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 не подходит по определению.

  8. Ferroman

    22.12.2009

    1 ↑
    0 ↓
    Спросить Гвидо можно в рассылке разработчиков python-list/Python-Help/python-dev

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.