6
votes

Possible d'appeler la fonction Python à un seul paramètre sans utiliser de parenthèses?

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 xxx

génère une erreur de syntaxe. Donc, quelle est la transaction?

EDIT:

La déclaration que je lue ne s'applique que sur expressions génératrices :

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


5 commentaires

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 Interprète n'autorise que ceci pour les mots-clés ( docs.python.org/reference /lexical_analysis.html#eywords )


4 Réponses :


2
votes

Sans parenthèses, ceux-ci ne seraient pas Fonctions mais ou mots-clés (langage-intrinsèque).

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).


0 commentaires

8
votes

pour votre édition:

Si vous écrivez une expression génératrice, comme truc = (f (x) pour x dans les éléments) Vous avez besoin des supports, comme vous avez besoin du [..] autour d'une compréhension de la liste.

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 S = somme ((f (x) pour x dans les éléments)) (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)


0 commentaires

0
votes

Si je comprends bien, la règle ne concerne que les expressions génératrices ... Donc, par exemple: xxx

mais vous devriez toujours écrire: xxx

ceci ne s'applique pas aux fonctions génériques.


0 commentaires

5
votes

Vous pouvez le faire avec ipython - the % Autocall Commande Magic Contrôle cette fonctionnalité (ainsi que l'option de ligne -Autocall de commande). Utilisez % autocall 0 pour désactiver la fonctionnalité, % autocall 1 , la valeur par défaut, pour le faire fonctionner uniquement lorsqu'un argument est présent et % autocall 2 Pour qu'il fonctionne même pour les appels d'arguments, moins d'appels. XXX


0 commentaires