Вопрос

ниже:

name = 'TODD'
chars = set('AEIOU')
for ii in range(-1, int(math.copysign(len(name) + 1, -1)), -1):
    if any((cc in chars) for cc in name[ii]):
        print 'Found'
    else:
        print 'Not Found'
.

Я понимаю, что то, что внутри любого (...) - это объект генератора.То, что я не понимаю, это отсутствие скобок - если скобки принадлежат к любой () функции, не должен ли быть еще один набор скобок вокруг выражения генератора?

спасибо.

Это было полезно?

Решение

Скобки могут быть опущены при использовании в функциональных вызовах только с одним аргументом, Синтаксис выражения генератора специально позволяет ему.

скобки могут быть опущены на звонки только с одним аргументом.Смотрите раздел Звонки для деталей.

Другие советы

Вы можете оставить скобки выражения генератора, если выражение уже единственное в скобках.

из

от Документация :

скобки могут быть опущены на вызовах только с одним аргументом.

Нет, дополнительные партнеры не нужны, ни на самом деле не являются пользователями, которые всегда необходимы для «логического выражения», вы испытываете тестирование, см. Эти два простых примера:

In [37]: any(i > 10 for i in range(19))
Out[37]: True

In [38]: all(i > 10 for i in range(19))
Out[38]: False
.

Что у вас есть, это функциональный вызов с одним аргументом (выражение вашего генератора), поэтому не требуется никаких друзей.Смотрите Разращивание генератора Docs для получения дополнительной информации.

For function calls with just one argument (that generator expression), they aren't required per the docs

The parentheses can be omitted on calls with only one argument. See section Calls for the detail.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top