Es bedeutet das Ende der Positions nur Parameter , Parameter Sie können nicht als Keyword - Parameter verwenden. Vor Python 3.8 konnten solche Parameter nur in der C-API angegeben werden.
Dies bedeutet, dass das key
Argument to __contains__
nur von position ( range(5).__contains__(3)
) übergeben werden kann, nicht als Schlüsselwortargument ( range(5).__contains__(key=3)
), was Sie können mit Positionsargumenten in pure-Python - Funktionen zu tun.
Siehe auch die Argument Clinic- Dokumentation:
Um alle Parameter in Argument Clinic als nur positionell zu markieren, fügen Sie /
nach dem letzten Parameter eine Zeile hinzu, die genauso eingerückt ist wie die Parameterzeilen.
und die (jüngste Ergänzung zu) den Python-FAQ :
Ein Schrägstrich in der Argumentliste einer Funktion zeigt an, dass die Parameter davor nur positionell sind. Nur Positionsparameter sind solche ohne einen extern verwendbaren Namen. Beim Aufruf einer Funktion, die nur Positionsparameter akzeptiert, werden Argumente Parametern zugeordnet, die ausschließlich auf ihrer Position basieren.
Die Syntax ist jetzt Teil der Python-Sprachspezifikation ab Version 3.8 , siehe PEP 570 - Nur Python-Positionsparameter . Vor PEP 570 war die Syntax bereits für eine mögliche zukünftige Aufnahme in Python reserviert, siehe PEP 457 - Syntax für Nur-Position-Parameter .
Nur-Positions-Parameter können zu saubereren und klareren APIs führen, reine Python-Implementierungen von ansonsten nur C-Modulen konsistenter und einfacher zu warten machen, und da Nur-Position-Parameter nur sehr wenig Verarbeitung erfordern, führen sie zu schnellerem Python-Code.
/
Tokens, weil "es die umgekehrte Operation von*
" ist, zeigt, dass Python nur ein bisschen verrückt ist. Es ist eine Art Synästhesie.Schrägstrich (/) zeigt an, dass alle Argumente davor nur Positionsargumente sind. Die Funktion "Nur Positionsargumente" wurde in Python 3.8 hinzugefügt, nachdem PEP 570 akzeptiert wurde. Ursprünglich wurde diese Notation in PEP 457 - Notation für Notation für Nur-Position-Parameter definiert
Nehmen wir folgendes Beispiel
Hier in der obigen Funktionsdefinition sind die Parameter a und b nur positionell, während x oder y entweder positionell oder Schlüsselwort sein können.
Folgende Funktionsaufrufe sind gültig
Der folgende Funktionsaufruf ist jedoch ungültig, wodurch eine Ausnahme TypeError ausgelöst wird, da a, b nicht als Positionsargumente, sondern als Schlüsselwort übergeben werden
Viele in Python integrierte Funktionen akzeptieren nur Positionsargumente, bei denen das Übergeben von Argumenten per Schlüsselwort keinen Sinn ergibt. Zum Beispiel akzeptiert die eingebaute Funktion len nur ein Positionsargument (nur). Wenn das Aufrufen von len als len (obj = "Hallo Welt") die Lesbarkeit beeinträchtigt, überprüfen Sie die Hilfe (len).
Nur Positionsparameter erleichtern die Wartung der zugrunde liegenden c / library-Funktionen. Damit können Parameternamen von nur Positionsparametern in Zukunft geändert werden, ohne dass das Risiko besteht, dass der Clientcode, der die API verwendet, beschädigt wird
Last but not least können wir nur mit Positionsparametern ihre Namen für Schlüsselwortargumente mit variabler Länge verwenden. Überprüfen Sie das folgende Beispiel
Nur Positionsparameter sind hier besser unter Typen von Funktionsargumenten in Python: Nur Positionsparameter
Die Syntax nur für Positionsparameter wurde offiziell zu python3.8 hinzugefügt. Überprüfen Sie, was neu ist. Python3.8 - Nur Positionsargumente
PEP-bezogen: PEP 570 - Nur Python-Positionsparameter
quelle