La documentation Python spécifie que c'est légal d'omettre les parenthèses si une fonction ne prend qu'un seul paramètre, mais génère une erreur de syntaxe. Donc, quelle est la transaction? P> EDIT: P> La déclaration que je lue ne s'applique que sur expressions génératrices em> : p> Les parenthèses peuvent être omises sur des appels avec un seul argument. P>
blockQuote> p>
4 Réponses :
Sans parenthèses, ceux-ci ne seraient pas Ce fil de scaleverflow (avec de très belles réponses ) contient une avance comme à la façon dont une peut créer leur propre python pur (à travers un piratage avancé et non une bonne idée dans 99,99% des cas). P> Fonctions code> mais
code> ou
mots-clés code> (langage-intrinsèque). P>
pour votre édition: p>
Si vous écrivez une expression génératrice, comme Mais lorsque vous passez quelque chose d'une expression génératrice à une fonction (qui est un modèle assez courant, car c'est à peu près la grande idée des générateurs), vous n'avez pas besoin de deux ensembles de crochets - au lieu de quelque chose comme truc = (f (x) pour x dans les éléments) code> Vous avez besoin des supports, comme vous avez besoin du
[..] code> autour d'une compréhension de la liste. p>
S = somme ((f (x) pour x dans les éléments)) code> (supports extérieurs pour indiquer un appel de fonction, interne pour l'expression génératrice) Vous pouvez simplement écrire
somme (f (x) pour x dans les éléments) code> p>
Si je comprends bien, la règle ne concerne que les expressions génératrices ...
Donc, par exemple: mais vous devriez toujours écrire: p> ceci ne s'applique pas aux fonctions génériques. p> p>
Vous pouvez le faire avec ipython - the % Autocall code> Commande Magic
Contrôle cette fonctionnalité (ainsi que l'option de ligne -Autocall code> de commande). Utilisez
% autocall 0 code> pour désactiver la fonctionnalité,
% autocall 1 code>, la valeur par défaut, pour le faire fonctionner uniquement lorsqu'un argument est présent et
% autocall 2 Code> Pour qu'il fonctionne même pour les appels d'arguments, moins d'appels.
Es-tu sûr? Pouvez-vous nous dire où lisez-vous cette règle? Êtes-vous déroulé avec Ruby?
Vous êtes probablement déroutant python avec Ruby ou Lua, où les paranthèses peuvent parfois être omises.
@Jen: Ils parlent de parenthèses qui désignent le générateur, pas l'appel de la fonction.
Il est confus pour les débutants que certains mots python sont des déclarations et d'autres sont des fonctions, d'autant plus qu'elles les déplacent entre les versions.
Le ipython ( ipython.scipy.org/moin ) Interprète interactif peut omettre des parenthèses, mais le
Python code> Interprète n'autorise que ceci pour les mots-clés ( docs.python.org/reference /lexical_analysis.html#eywords )