def f(*args):
    print(args)
    print(type(args), len(args))
    for x in args:
        print(x)


f(1, 2, 3)


f("foo", "bar", "baz", "qux", "quux")


print("\n\n")


def avg(*args):
    total = 0
    for i in args:
        total += i
    return total / len(args)


print(avg(1, 2, 3))

print(avg(1, 2, 3, 4, 5))


print("\n\n")


def avg(*args):
    return sum(args) / len(args)


print(avg(1, 2, 3))

print(avg(1, 2, 3, 4, 5))


print("\n\n")


def f(*args):
    print(type(args), args)


a = ["foo", "bar", "baz", "qux"]
f(*a)


print("\n\n")


def f(**kwargs):
    print(kwargs)
    print(type(kwargs))
    for key, val in kwargs.items():
        print(key, "->", val)


f(foo=1, bar=2, baz=3)


print("\n\n")


def f(a, b, c):
    print(f"a = {a}")
    print(f"b = {b}")
    print(f"c = {c}")


d = {"a": "foo", "b": 25, "c": "qux"}
f(**d)

f(a="foo", b=25, c="qux")

f(**dict(a="foo", b=25, c="qux"))


print("\n\n")


def f(a, b, *args, **kwargs):
    print(f"a = {a}")
    print(f"b = {b}")
    print(f"args = {args}")
    print(f"kwargs = {kwargs}")


f(1, 2, "foo", "bar", "baz", "qux", x=100, y=200, z=300)


print("\n\n")


def f(*args):
    for i in args:
        print(i)


a = [1, 2, 3]
t = (4, 5, 6)
s = {7, 8, 9}

f(*a, *t, *s)


print("\n\n")


def f(**kwargs):
    for k, v in kwargs.items():
        print(k, "->", v)


d1 = {"a": 1, "b": 2}
d2 = {"x": 3, "y": 4}

f(**d1, **d2)


print("\n\n")


def f(*args):
    for i in args:
        print(i)


f(*[1, 2, 3], *[4, 5, 6])


print("\n\n")


def f(**kwargs):
    for k, v in kwargs.items():
        print(k, "->", v)


f(**{"a": 1, "b": 2}, **{"x": 3, "y": 4})


print("\n\n")


def concat(*args):
    print(f'-> {".".join(args)}')


concat("a", "b", "c")

concat("foo", "bar", "baz", "qux")


print("\n\n")


def concat(prefix, *args):
    print(f'{prefix}{".".join(args)}')


concat("//", "a", "b", "c")

concat("... ", "foo", "bar", "baz", "qux")


print("\n\n")


def concat(*args, prefix="-> "):
    print(f'{prefix}{".".join(args)}')


concat("a", "b", "c", prefix="... ")


print("\n\n")


def concat(*args, prefix="-> ", sep="."):
    print(f"{prefix}{sep.join(args)}")


concat("a", "b", "c")

concat("a", "b", "c", prefix="//")

concat("a", "b", "c", prefix="//", sep="-")

concat("a", "b", "c")
