Cela signifie la fin des paramètres positionnels uniquement , paramètres que vous ne pouvez pas utiliser comme paramètres de mot-clé. Avant Python 3.8, ces paramètres ne pouvaient être spécifiés que dans l'API C.
Cela signifie que l' key
argument à __contains__
ne peut être passé que par position ( range(5).__contains__(3)
), pas en tant que mot-clé argument ( range(5).__contains__(key=3)
), ce que vous pouvez faire avec des arguments positionnels dans des fonctions python pur.
Consultez également la documentation Argument Clinic :
Pour marquer tous les paramètres comme positionnels uniquement dans Argument Clinic, ajoutez un /
sur une ligne par lui-même après le dernier paramètre, en retrait de la même manière que les lignes de paramètres.
et le (très récent ajout à) la FAQ Python :
Une barre oblique dans la liste des arguments d'une fonction indique que les paramètres qui la précèdent sont uniquement positionnels. Les paramètres de position uniquement sont ceux sans nom utilisable en externe. Lors de l'appel d'une fonction qui accepte les paramètres de position uniquement, les arguments sont mappés à des paramètres basés uniquement sur leur position.
La syntaxe fait désormais partie de la spécification du langage Python, à partir de la version 3.8 , voir PEP 570 - Paramètres de position Python uniquement . Avant PEP 570, la syntaxe était déjà réservée pour une éventuelle inclusion future dans Python, voir PEP 457 - Syntaxe pour les paramètres positionnels uniquement .
Les paramètres de position uniquement peuvent conduire à des API plus propres et plus claires, rendre les implémentations en Python pur de modules autrement C-uniquement plus cohérents et plus faciles à maintenir, et comme les paramètres de position uniquement nécessitent très peu de traitement, ils conduisent à un code Python plus rapide.
Martijn Pieters
la source
/
jeton, parce que "c'est l'opération inverse de*
" montre que Python est juste un peu fou. C'est une sorte de synesthésie.La barre oblique (/) indique que tous les arguments antérieurs sont uniquement des arguments positionnels. La fonctionnalité d'arguments positionnels uniquement a été ajoutée dans python 3.8 après l' acceptation de PEP 570 . Initialement, cette notation a été définie dans PEP 457 - Notation pour la notation pour les paramètres de position uniquement
Prenons l'exemple suivant
Ici, dans la définition de fonction ci-dessus, les paramètres a et b sont uniquement positionnels, tandis que x ou y peuvent être positionnels ou mots clés.
Les appels de fonction suivants sont valides
Mais, l'appel de fonction suivant n'est pas valide, ce qui déclenche une exception TypeError car a, b ne sont pas passés en tant qu'arguments de position à la place en tant que mot-clé
De nombreuses fonctions intégrées en python n'acceptent que des arguments positionnels où passer des arguments par mot-clé n'a pas de sens. Par exemple, la fonction intégrée len n'accepte qu'un seul argument positionnel (uniquement), Où appeler len comme len (obj = "hello world") nuit à la lisibilité, vérifiez help (len).
Les paramètres uniquement positionnels facilitent la maintenance des fonctions c / library sous-jacentes. Il permet aux noms de paramètres des paramètres uniquement positionnels d'être modifiés à l'avenir sans risque de rupture du code client qui utilise l'API
Enfin et surtout, les paramètres positionnels uniquement nous permettent d'utiliser leurs noms pour être utilisés dans des arguments de mots-clés de longueur variable. Vérifiez l'exemple suivant
Les paramètres uniquement positionnels sont mieux expliqués ici à Types d'arguments de fonction en python: Paramètres positionnels uniquement
La syntaxe des paramètres de position uniquement a été officiellement ajoutée à python3.8. Commander les nouveautés python3.8 - arguments que position
Lié à PEP: PEP 570 - Paramètres de position uniquement Python
la source