Résumez le comportement des arguments de la fonction python. Y compris 3 séries.
nombre | Syntax | une fonction |
---|---|---|
1 | func(value) | Appel normal,L'appel de fonction et la position de l'argument sont appariés |
2 | func(name=value) | Appel de fonction correspondant au mot-clé |
3 | func(*iterable) | Développez la fonction itérable et appelez |
4 | func(**dict) | clé dict,Développer la valeur et appeler la fonction(Passer l'argument de 2 comme dict) |
nombre | Syntax | une fonction |
---|---|---|
1 | def func(name) | Définition de fonction normale,L'appel de fonction et la position de l'argument sont appariés |
2 | def func(name=value) | Définir la valeur initiale dans l'argument |
3 | def func(*name) | Faire de l'argument un tapage |
4 | def func(**name) | Définir l'argument sur le dictionnaire |
5 | def func(*arg, name) | Seul le nom doit être spécifié,Série 3 uniquement |
6 | def func(*, name=value) | Rendre tous les arguments obligatoires,Série 3 uniquement |
5 et 6 sont difficiles à comprendre
Dans un appel de fonction python, il peut être appelé comme
name = value```, mais avec seulement
def func (name) ``, l'appelant de la fonction peut définir name = value ou le transmettre uniquement par valeur. Ensuite, bien sûr, le code variera.
Donc, j'ai une syntaxe pour le forcer à partir du 3ème système essayant de le résoudre (probablement).
5 peuvent coexister avec ceux qui forcent `` nom = valeur '' et ceux qui ne le font pas. Dans ce qui suit, seul c, force le formulaire nom = valeur.
In [18]: def kwonly(a, *b ,c):
....: print(a, b, c)
....:
In [19]: kwonly(1,2,3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-763cbb52b1ed> in <module>()
----> 1 kwonly(1,2,3)
TypeError: kwonly() missing 1 required keyword-only argument: 'c'
#c est le nom=Vous ne pouvez passer une valeur que par valeur
In [20]: kwonly(1, 2, c=3)
1 (2,) 3
C'est presque la même chose que 5, mais définissons tout sur name = value et décidons de la valeur par défaut. Bien sûr, il n'est pas nécessaire de définir la valeur par défaut. Vous pouvez également définir la valeur par défaut.
In [21]: def kwonly2(*, b , c=3):
....: print(b,c)
....:
In [22]: kwonly2(1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-22-ace6c6f57de4> in <module>()
----> 1 kwonly2(1)
TypeError: kwonly2() takes 0 positional arguments but 1 was given
#1 n'est pas reconnu comme un argument en premier lieu
In [23]: kwonly2(b=1)
1 3
In [24]: kwonly2(b=1,2)
File "<ipython-input-24-6c15c1f279e8>", line 1
kwonly2(b=1,2)
^
SyntaxError: non-keyword arg after keyword arg
#c est le nom=Ne peut être passé que par valeur(Bien sûr b aussi)
In [25]: kwonly2(b=1,c=2)
1 2
Recommended Posts