Допустимы ли выражения списка имен цикла for? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Допустимы ли выражения списка имен цикла for? [закрыто]

Сообщение Anonymous »

В CPython 2.7.10 и 3.4.3, а также PyPy 2.6.0 (Python 2.7.9), очевидно, не является явной синтаксической ошибкой использование выражений (или некоторого их подмножества) для списка имен в цикле for. Вот типичный цикл for:

Код: Выделить всё

>>> for a in [1]: pass
...
>>> a
1
Но вы также можете использовать атрибуты объектов:

Код: Выделить всё

>>> class Obj(object): pass
...
>>> obj = Obj()
>>> for obj.b in [1]: pass
...
>>> obj.b
1
И вы даже можете использовать атрибуты из выражений:

Код: Выделить всё

>>> for Obj().c in [1]: pass
...
Но не все выражения работают:

Код: Выделить всё

>>> for (True and obj.d) in [1]: pass
...
File "", line 1
SyntaxError: can't assign to operator
Но они делают это до тех пор, пока атрибут находится снаружи?

Код: Выделить всё

>>> for (True and obj).e in [1]: pass
...
>>> obj.e
1
Или что-то назначаемое?

Код: Выделить всё

>>> for {}['f'] in [1]: pass
...
Я удивлен, что все это работает в Python. Я ожидал, что будут разрешены только имена. Они вообще должны работать? Это упущение? Это деталь реализации CPython, которую также реализует PyPy?

Подробнее здесь: https://stackoverflow.com/questions/395 ... ions-legal
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»