默认参数
为参数指定默认值,调用时可省略:
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Alice") # Hello, Alice!
greet("Bob", "Hi") # Hi, Bob!
注意: 默认参数必须放在非默认参数后面。
# 错误示例
# def greet(greeting="Hello", name): # SyntaxError!
# pass
关键字参数
通过参数名传递,顺序可以任意:
def person_info(name, age, city):
print(f"{name}, {age}岁, 来自{city}")
# 关键字参数,顺序无关
person_info(age=25, city="北京", name="Alice")
# Alice, 25岁, 来自北京
混合使用: 位置参数在前,关键字参数在后。
person_info("Alice", age=25, city="北京") # 正确
# person_info(name="Alice", 25, "北京") # 错误!位置参数不能在关键字参数后
可变参数
*args —— 接收任意数量的位置参数
def sum_all(*args):
total = 0
for num in args:
total += num
return total
# 调用
print(sum_all(1, 2, 3)) # 6
print(sum_all(1, 2, 3, 4)) # 10
print(sum_all()) # 0
args 的本质: 函数内部是一个元组。
def show_args(*args):
print(type(args)) # <class 'tuple'>
print(args) # (1, 2, 3)
show_args(1, 2, 3)
**kwargs —— 接收任意数量的关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
# 调用
print_info(name="Alice", age=25, city="北京")
# name: Alice
# age: 25
# city: 北京
kwargs 的本质: 函数内部是一个字典。
def show_kwargs(**kwargs):
print(type(kwargs)) # <class 'dict'>
print(kwargs) # {'name': 'Alice', 'age': 25}
show_kwargs(name="Alice", age=25)
参数顺序规则
定义函数时,参数必须按以下顺序:
def func(位置参数, 默认参数, *args, **kwargs):
pass
# 示例
def demo(a, b=2, *args, **kwargs):
print(f"a={a}, b={b}")
print(f"args={args}")
print(f"kwargs={kwargs}")
demo(1, 3, 4, 5, x=10, y=20)
# a=1, b=3
# args=(4, 5)
# kwargs={'x': 10, 'y': 20}
多返回值
Python 函数可以同时返回多个值(实际是返回元组):
def min_max(numbers):
return min(numbers), max(numbers)
minimum, maximum = min_max([3, 1, 4, 1, 5])
print(minimum) # 1
print(maximum) # 5
# 本质上返回的是元组
result = min_max([3, 1, 4])
print(result) # (1, 4)
print(type(result)) # <class 'tuple'>




