Постоянное значение переменной в Python - PullRequest
0 голосов
/ 24 февраля 2009
for i in range(0,3):
    j = 0
    print 'incrementing '
    j += 1
    print j

печать

incrementing 
1
incrementing 
1
incrementing 
1

Как мне сохранить значение 'j', чтобы оно напечатало:

1
2
3

Ответы [ 2 ]

16 голосов
/ 24 февраля 2009

Не следует сбрасывать j в ноль в цикле:

j = 0
for i in range(0,3):
    print 'incrementng '
    j += 1
    print j
0 голосов
/ 24 февраля 2009

Очень грязный хак, если вы хотите поместить это в функцию: аргументы по умолчанию! В Python, если аргумент по умолчанию является массивом, он становится «статическим» и изменяемым, вы можете хранить его с помощью различных вызовов, например:

def f(j = [0]):
    j[0] += 1
    print('incrementing', j[0])

f() # prints "incrementing 1"
f() # prints "incrementing 2"
f() # prints "incrementing 3"

Веселись!

Edit:

Удивительно, преуменьшено без объяснения причин, почему этот взлом плох или не по теме. Аргументы по умолчанию в Python оцениваются во время синтаксического анализа, я не прав? Я не думаю, что я просто ожидал интеллектуальных ответов вместо отрицательных моментов в моем сообщении ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...