Python Anfänger was heißt Args und Kwargs?
Ich habe mehrere Fragen
1)
Wenn ich eine Klasse erstelle z.B
class Dog() was kann ich in dieser Klammer einsetzen bzw warum setzt man überhaupt etwas da ein?
2)
Ich habe eine Methode innerhalb dieser Klasse erstellt z.B
def __init__ (self, Benutzer_ID ='Sicher', Alter)
Ich habe hier den Parameter Benutzer_ID einen Wert zugewiesen, normalerweise
darf man doch dies nicht tun. Die richtige Schreibweise sieht doch wie folgt aus oder?
class Dog()
def __init__ (self, Benutzer_ID , Alter)
self.Benutzer_ID = Benutzer_ID
Dog1 = Dog('Sicher',18)
3)Ich habe folgende Funktion > deff __init__(self, Benutzer_ID='Hey',' *args, **kwargs):
wofür steht das args und kwargs?
1 Antwort
(...) was kann ich in dieser Klammer einsetzen (...)
Eine Basisklasse, von der die Klasse erben soll.
Die richtige Schreibweise sieht doch wie folgt aus oder?
Du kannst Parametern auch Standardwerte geben. Dann brauchst du ihnen bei Aufruf auch kein explizites Argument zuordnen. Voraussetzung ist allerdings, dass ein Parameter mit Standardwert in der Parameterliste erst nach den Parametern ohne Wert kommt.
Beispiel mit einer einfachen Funktion:
def multiply(first_number, second_number=2):
result = first_number * second_number
print(result)
multiply(3) # 6
multiply(6, 7) # 42
wofür steht das args und kwargs?
Das Sternchen vor dem Parameternamen gibt an, dass für diesen Parameter eine variable Menge an Argumenten angegeben werden kann. Der Parameter selbst stellt darauffolgend eine Liste dar, die all die übergebenen Werte beinhaltet.
Beispiel:
def get_sum(*values):
result = 0
for value in values:
result += value
return result
sum_1 = get_sum(1, 2, 3)
print(sum_1) # 6
sum_2 = get_sum(4, 5)
print(sum_2) # 9
Bei einem Parameter mit doppelten Sternchen hingegen werden Schlüsselwertpaare als Argumente erwartet. Der Parameter stellt ein Dictionary dar, welches alle Paare speichert.
Beispiel:
def print_age(**data):
for key in data:
print(key, "is", data[key], "years old.")
print_age(Max=43, Josefine=39, Katharina=22)