# arbitrary numbers of arguments. def add(*args): return sum(args) print(""" def add(*args): return sum(args) """) # *: args accept multiple arguments. # args <- (1,2,3,4,5) # sum(1,2,3,4,5) -> 15 print(f"add(1,2,3,4,5): {add(1,2,3,4,5)}") print(f"add(10,2,3,4,5,6,7): {add(10,2,3,4,5,6,7)}") def multiplied_sum(*numbers, multiplier=1): total_sum = sum(numbers) return total_sum * multiplier print(""" def multiplied_sum(*numbers, multiplier=1): total_sum = sum(numbers) return total_sum * multiplier """) # *: numbers <-- (1,2,3,4): 10 # multiplier <- 5 print(f"multiplied_sum(1,2,3,4,multiplier=5): {multiplied_sum(1,2,3,4,multiplier=5)}") # *: numbers <-- (1,2,3,4,5): 15 # multiplier <- 1 (default) print(f"multiplied_sum(1,2,3,4,5): {multiplied_sum(1,2,3,4,5)}") # *: numbers <-- (1,2,3 # multiplier <- 1 print(f"multiplied_sum(1,2,3): {multiplied_sum(1,2,3)}") def multiplied_sum2(*numbers, multiplier): total_sum = sum(numbers) return total_sum * multiplier print(""" def multiplied_sum2(*numbers, multiplier=1): total_sum = sum(numbers) return total_sum * multiplier """) # *: numbers <-- (1,2,3,4): 10 # multiplier <- 5 print(f"multiplied_sum2(1,2,3,4,multiplier=5): {multiplied_sum2(1,2,3,4,multiplier=5)}") ''' Error: since multiplier have not default value, must submit a named argument. # *: numbers <-- (1,2,3,4,5): 15 # multiplier <- 1 (default) print(f"multiplied_sum2(1,2,3,4,5): {multiplied_sum2(1,2,3,4,5)}") # *: numbers <-- (1,2,3 # multiplier <- 1 print(f"multiplied_sum2(1,2,3): {multiplied_sum2(1,2,3)}") ''' def area(*, width, length): return width * length print(""" def area(*, width, length): return width * length """) print(f"area(width=2,length=3): {area(width=2,length=3)}") print( """ print(f"area(2,3): {area(2,3)}") TypeError: area() takes 0 positional arguments but 2 were given """ )