Fassen Sie das Verhalten von Python-Funktionsargumenten zusammen. Einschließlich 3 Serien.
Nummer | Syntax | Funktion |
---|---|---|
1 | func(value) | Normaler Anruf,Funktionsaufruf und Argumentposition sind gepaart |
2 | func(name=value) | Funktionsaufruf entsprechend dem Schlüsselwort |
3 | func(*iterable) | Erweitern Sie iterable und rufen Sie die Funktion auf |
4 | func(**dict) | Diktatschlüssel,Erweitern Sie auf Wert und rufen Sie die Funktion auf(Übergeben Sie das Argument 2 als Diktat) |
Nummer | Syntax | Funktion |
---|---|---|
1 | def func(name) | Normale Funktionsdefinition,Funktionsaufruf und Argumentposition sind gepaart |
2 | def func(name=value) | Legen Sie den Anfangswert im Argument fest |
3 | def func(*name) | Machen Sie das Argument zu einem Taple |
4 | def func(**name) | Setzen Sie das Argument auf Wörterbuch |
5 | def func(*arg, name) | Es muss nur der Name angegeben werden,Nur 3er Serie |
6 | def func(*, name=value) | Machen Sie alle erforderlichen Argumente,Nur 3er Serie |
5 und 6 sind schwer zu verstehen
In einem Python-Funktionsaufruf kann er als `name = value``` aufgerufen werden, aber mit nur`
def func (name) `` kann der Funktionsaufrufer name = value setzen oder nur als Wert übergeben. Dann wird der Code natürlich variieren.
Also habe ich eine Syntax bekommen, um es vom 3. System zu erzwingen, das versucht, es zu lösen (wahrscheinlich).
5 kann mit denen koexistieren, die `` `name = value``` erzwingen, und mit denen, die dies nicht tun. Erzwingen Sie im Folgenden nur c den Formularnamen = Wert.
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 ist der Name=Sie können einen Wert nur für einen Wert übergeben
In [20]: kwonly(1, 2, c=3)
1 (2,) 3
Es ist fast dasselbe wie 5, aber setzen wir alle auf name = value und legen den Standardwert fest. Natürlich ist der Standardwert nicht erforderlich. Sie können auch den Standardwert festlegen.
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 wird überhaupt nicht als Argument anerkannt
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 ist der Name=Kann nur als Wert übergeben werden(Natürlich auch b)
In [25]: kwonly2(b=1,c=2)
1 2
Recommended Posts