Maison  >  Article  >  développement back-end  >  Application des arguments de mots-clés de fonction en Python

Application des arguments de mots-clés de fonction en Python

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 12:51:02727parcourir

Enforcement of function keyword arguments in Python

Avant de commencer mes nouvelles fonctions il y a quelques mois, cela faisait très depuis que je n'avais pas programmé en Python.

Soit dit en passant, j'ai continué à travailler au cours des dernières années dans des rôles qui impliquaient soit du Javascript full-stack, soit principalement du Javascript avec un peu d'un autre langage (le plus récemment Go).

Donc, ça a été amusant de me dégourdir un peu les muscles dans un langage différent, surtout aussi accessible que Python.

Une fonctionnalité du langage que j'apprécie en ce moment est l'application d'arguments de mots-clés aux fonctions utilisant la propriété kw_only rendue accessible dans le décorateur @dataclass.

Cela crée un code qui ressemble à ceci :

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str

person1 = Person("Alice", 30, "New York")

génère une erreur, car l'utilisation de kw_only s'attend à voir quelque chose comme ce qui suit :

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str = "Unknown"

person1 = Person(name="Alice", age=30, city="New York")

Bien que l'erreur soit générée :

TypeError     

Traceback (most recent call last)
Cell In[8], line 10
      7     city: str = "Unknown"

---> 10 person1 = Person("Alice", 30, "New York")

TypeError: Person.__init__() takes 1 positional argument but 4 were given

est "clair" dans le sens où il vous indiquera qu'il y a trop d'arguments de position fournis, si vous n'êtes pas familier avec kw_only cela peut être un peu déroutant car il semble que vous invoquez la fonction correctement.

Si vous venez d'un milieu Javascript/Typescript comme moi, ou si vous avez une expérience antérieure avec des langages comme Go ou Rust qui appliquent cela en utilisant quelque chose comme des structures où vous pouvez fournir les arguments dans l'ordre de votre choix, à condition que comme les propriétés suivent la forme de l'objet/de la structure, cela vous semblera familier et sera probablement un ajout bienvenu à votre code Python.

Ceci est particulièrement utile si vous travaillez avec un grand nombre d'arguments, dont certains peuvent être facultatifs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn