Уведомления

Группа в Telegram: @pythonsu

#1 Май 31, 2008 16:40:26

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите понять код

Если нужно в блоке изменить глобальную переменную, нужно использовать инструкцию global.
Ага, и засорять глобальное пространство имен;)



Офлайн

#2 Июнь 2, 2008 14:56:16

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите понять код

ZAN
спасибо!



Офлайн

#3 Июнь 16, 2008 15:04:56

Dimitor
От:
Зарегистрирован: 2007-10-30
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите понять код

На мой взгляд, в данном случае просто напрашивается применение генераторов:

def counter(start):
    curr = start
    while 1:
        curr += 1
        yield curr
f1 = counter(4)
print f1                    #<generator object at 0x00BF96C0>
print f1.next()          #5
print f1.next()          #6
И обертка, если не нравится использование .next()
def counter2(start):
    return counter(start).next
f2 = counter2(3)
print f2                    #<method-wrapper 'next' of generator object at 0x00BF9850>
print f2()                 #4
print f2()                 #5
Ибо использование глобальной переменной может привести к неожиданным эффектам при использовании двух и более объектов counter()…



Отредактировано (Июнь 16, 2008 15:11:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version