#! /usr/bin/env python3

# *values sammelt alle weiteren Positionsparameter in einem Tupel auf
# **kwargs sammelst alle weiteren Keyword Arguments als Dictionary auf
def summe(a, b, *values: 'List of ints', default=0, **kwargs) -> int:
    result = default
    result += a + b

    for v in values:
        result += v

    # 1. Variante: Alle kwargs in Iteration verarbeiten
    #for key, value in kwargs:
    #    pass
    # 2. Variante: Einzelne Werte in kwargs selbst verarbeiten
    #if 'city' in kwargs:
    #    print("Hier in", kwargs['city'])
    # 3. Variante: kwargs blind an tieferliegende Funktion weitergeben
    # conn = lower.connect(p1, p2, p3, host='localhost', **kwargs)
    return result


print("1. Summe:", summe(1, 2))
print("2. Summe:", summe(1, 2, 3, 4))

mylist = [1, 1, 2, 3, 5]
# *mylist konvertiert hier die Werte in eine Liste von Positionsparametern
print("3. Summe:", summe(*mylist))
print(mylist)
# print("4. Summe:", summe(*range(10)))
print("5. Summe:", summe(*mylist, default=100))

print("6. Summe:", summe(*mylist, default=100, city="Essen", foo="bar"))
