Define a function, add a docstring, and use default parameter values:
def greet(name, greeting="Hello"):
"""Return a greeting string for the given name."""
return f"{greeting}, {name}!"
print(greet("Alice")) # Hello, Alice!
print(greet("Bob", "Hi")) # Hi, Bob!
print(greet(greeting="Hey", name="Carol")) # keyword args
Use *args and **kwargs to accept a variable number of arguments:
def total(*numbers):
return sum(numbers)
print(total(1, 2, 3, 4)) # 10
def show_info(**details):
for key, value in details.items():
print(f"{key}: {value}")
show_info(name="Alice", age=30, city="London")
Lambda expressions create small anonymous functions inline:
double = lambda x: x * 2
print(double(5)) # 10
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort(key=lambda x: -x) # sort descending
print(numbers)
evens = list(filter(lambda x: x % 2 == 0, numbers))
squared = list(map(lambda x: x ** 2, numbers))