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")