IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment implémenter *args et **kwargs dans argparse python


Sujet :

Python

  1. #1
    Membre à l'essai Avatar de Sachin Bhatt
    Homme Profil pro
    Collégien
    Inscrit en
    Juin 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juin 2022
    Messages : 5
    Points : 11
    Points
    11
    Par défaut Comment implémenter *args et **kwargs dans argparse python
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import argparse
     
    parser = argparse.ArgumentParser()
     
    parser.add_argument("required_arg", metavar="username:pass@hostname")
    parser.add_argument("--optional_arg", 
                        help="This optional argument should have args and 
                              kwargs implemented in it as I want to make 
                              it flexible eg.
                              it may have optional_arg1, 
                              optional_arg2, key1=value1, key2=value2 or 
                              it may have optional_arg1, key1=value1, 
                              key2=value2, key3=value3")
    Quelqu'un peut-il s'il vous plaît me montrer comment implémenter *args et **kwargs dans cette section add_argument() ?

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Qu'entends-tu exactement par "implémenter *args et **kwargs. Ces deux variables ne sont pas définies dans le contexte de ton code. Dans un appel de méthode comme l'appel de add_argument(), cette syntaxe ne fait du sens que si tu as défini la liste args et le dictionnaire kwargs au préalable, de manière à réaliser le "dépaquetage". Quel est le problème que tu essaies de résoudre exactement ?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Sachin Bhatt Voir le message
    Quelqu'un peut-il s'il vous plaît me montrer comment implémenter *args et **kwargs dans cette section add_argument() ?
    C'est pas comme ça que ça marche.

    Les arguments supplémentaires "*args" et "**kwargs" c'est toi qui les implémentes dans tes propres fonctions. Tu crées par exemple une fonction "debug()", tu peux y mettre "*args" et "**kwargs" pour que l'appelant (ici c'est encore toi mais ça pourrait être un autre) l'appelle en lui passant des trucs facultatifs mais qu'elle saura gérer s'ils lui sont envoyés.

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def debug(txt, *args, **kwargs):
    	tab=kwargs.pop("tab", None)
    	titre=kwargs.pop("titre", None)
     
    	tab="\t" * tab if tab is not None else ""
    	if titre is not None: print("%s%s" % (tab, titre))
    	print("%s%s" % (tab, txt))
    # debug()

    Maintenant tu peux l'appeler de ces différentes façons
    • debug("Hello")
    • debug("Hello", tab=1)
    • debug("Hello", titre="myDebug")
    • debug("Hello", titre="myDebug", tab=1)
    • debug("Hello", tab=1, titre="myDebug")


    Mais en aucun cas tu ne peux "implémenter" *args et **kwargs dans une fonction qui n'a pas été prévue pour les recevoir.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Après, les syntaxes de * et ** peuvent également être utilisées dans un contexte d'appel de fonction/méthode, mais ce n'est probablement pas ce que tu avais en tête. N'hésite pas à revoir les concepts sous-jacents, pour les deux situations (définition de fonction et appel de fonction)
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 857
    Points
    56 857
    Billets dans le blog
    40
    Par défaut
    Salut,

    Pour compléter, à toutes fins utiles : Introduction à *args et **kwargs

Discussions similaires

  1. Comment implémenter une class iterator dans un Deque
    Par Flexxi dans le forum Débuter
    Réponses: 7
    Dernier message: 08/05/2019, 16h10
  2. Comment implémenter des boutons dans des fragments ?
    Par fripon76 dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 02/11/2011, 11h41
  3. Réponses: 4
    Dernier message: 20/04/2011, 11h20
  4. Réponses: 5
    Dernier message: 15/01/2010, 19h32
  5. Réponses: 1
    Dernier message: 27/06/2007, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo