Question

Dans ce qui suit:

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'

Je comprends que ce qui est à l'intérieur de tout (...) est un objet générateur.Ce que je ne comprends pas, c'est le manque de parenthèses - si les parenthèses appartiennent à la fonction de toutes les (), ne devraient pas y avoir un autre ensemble de parenthèses autour de l'expression génératrice?

merci.

Était-ce utile?

La solution

La parenthèse peut être omise lorsqu'elle est utilisée dans des appels de fonction avec un seul argument, le Syntaxe d'expression génératrice le permet spécifiquement de cela.

Les parenthèses peuvent être omises sur des appels avec un seul argument.Voir la section Appels pour le détail.

Autres conseils

Vous pouvez laisser les parenthèses d'une expression génératrice si l'expression est la seule chose entre parenthèses déjà.

du Documentation :

Les parenthèses peuvent être omises sur des appels avec un seul argument.

Non, les parens supplémentaires ne sont pas nécessaires, ni des parens ne sont toujours pas nécessaires à la "expression booléenne" que vous testez, voyez ces deux exemples simples:

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

Ce que vous avez est un appel de fonction avec un seul argument (votre expression génératrice) afin qu'aucune parens n'est requise.Voir le Expressions génératrices Docs pour plus d'informations.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top