Est-il possible de déclarer une fonction sans arguments mais de passer des arguments à cette fonction sans lever d'exception?
En python est-il possible d'avoir le code ci-dessus sans le déclenchement d'une exception ?
def myfunc():
pass
# TypeError myfunc() takes no arguments (1 given)
myfunc('param')
Généralement en php, dans certaines circonstances, je lance une fonction sans paramètres, puis récupérer les paramètres à l'intérieur de la fonction.
Dans la pratique, je ne veux pas déclarer arguments dans mafonction, puis en le passant quelques arguments. La seule solution que j'ai trouvé est myfunc(*arg)
. Existe-il d'autres méthodes ?
source d'informationauteur yuri
Vous devez vous connecter pour publier un commentaire.
Et pour répondre à la question: non, je ne crois pas qu'il existe d'autres façons.
La principale raison en est assez simple:
C, python est à pile. Une fonction qui ne nécessite pas de paramètres n'auront pas d'espace alloué sur la pile ((voir les commentaires)myFunc
au lieu de cela, les a en position 0 et 1).Un point supplémentaire est, comment voulez-vous accéder aux paramètres autrement?
Il y a deux façons de passer des arguments dans
En Position
Par Mot-Clé
Et vous pouvez utiliser un combinaison des deux
Bien sûr!
Vous pouvez définir la longueur variable des listes de paramètres comme:
args est un n-uplet de vos paramètres afin de l'appelant:
vous donne le n-uplet (1, 2) à l'intérieur de votre fonction.
Ici est une fonction décorateur, j'ai écrit à le faire, avec un exemple d'utilisation: