Je suis nouveau à Python et je viens d'apprendre la base de * args et ** kwargs.
Lorsque j'essaie de pratiquer avec mon propre code, j'ai eu une erreur de mot clé inattendu comme indiqué ci-dessous: P >
TypeError Traceback (most recent call last) <ipython-input-61-8bc2f643a250> in <module> 7 students = {"name":"John Price","age":27} 8 welcome_words = {"welcome":"hello and welcome"} ----> 9 student_info2(*courses,*module, **students, **welcome_words) TypeError: student_info2() got an unexpected keyword argument 'name'
4 Réponses :
Vous n'avez pas besoin de * s, vous devez les mettre dans la déclaration de votre fonction. De plus, si vous donnez une fonction 4 paramètres, vous devez recevoir 4.
def student_info2(*args): print(args) courses = ["Maths","Statistics"] module = "Data Science" students = {"name":"John Price","age":27} welcome_words = {"welcome":"hello and welcome"} student_info2(courses, module, students, welcome_words)
Merci, est trié maintenant, je vais aussi regarder le lien.
def student_info2(*args, **kwargs): print(args) print(kwargs)
Qu'est-ce que vous faites mal ici est p>
Votre fonction Student_Info2 ne peut prendre que 2 arguments de position par votre code, vous devez donc appeler la fonction comme celle-ci p>
étudiant_info2 (cours, module) p>
Si vous voulez que tous les 4 soient appelés en une fois, votre déclaration de fonction devrait aimer ceci p>
étudiant_info2 (arg1, arg2, arg3, arg4) ou étudiant_info2 (* args) p>
Vous avez deux paramètres comme entrée pour la fonction, mais vous avez donné quatre arguments comme entrée sur la fonction, mais si vous souhaitez utiliser args et kwargs, vous ne devez pas utiliser de cette façon. Voir ce site, ils peuvent vous aider à minimiser p>
https://realpython.com/python-kwargs-and-args/ a> p>
https://www.programiz.com/python-programming/args -et-kwargs p>