Обзоры в Python для циклов

Как насчет этого?

if ((d1 - (int)d1) == 0)
    // integer
153
задан chimeracoder 31 August 2010 в 17:52
поделиться

2 ответа

Наиболее вероятным ответом будет то, что это просто сохраняет грамматику простой, не было камнем преткновения для принятия, и многие были довольны тем, что не нужно устранять неоднозначность области, к которой принадлежит имя, при присвоении ему в конструкции цикла. . Переменные не объявляются внутри области видимости, это подразумевается расположением операторов присваивания. Ключевое слово global существует именно по этой причине (чтобы обозначить, что присваивание выполняется в глобальной области видимости).

Обновление

Вот хорошее обсуждение темы: http://mail.python.org/pipermail/python-ideas/2008-October/002109.html

Предыдущие предложения сделать для- петля переменные, локальные для цикла, имеют наткнулся на проблему существующих код, который зависит от переменной цикла сохраняя свое значение после выхода из петля, и кажется, что это рассматривается как желательная черта.

Короче говоря, вы, вероятно, можете обвинить в этом сообщество Python: P

98
ответ дан 23 November 2019 в 21:37
поделиться

Действительно полезным случаем для этого является использование enumerate и вы хотите получить общее количество в конце:

for count, x in enumerate(someiterator, start=1):
    dosomething(count, x)
print "I did something {0} times".format(count)

Это необходимо? Нет. Но это, безусловно, удобно.

Еще одна вещь, о которой следует помнить: в Python 2 также происходит утечка переменных в списках:

>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> x
9

Но то же самое не относится к Python 3.

38
ответ дан 23 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: