在 Python 中,函数或方法的传参方式非常灵活,主要包括以下几种类型,每种方式都有其独特的应用场景和特点。
位置参数
位置参数是最常见的传参方式,调用函数时,参数按照定义的顺序依次传递。它要求参数的顺序严格匹配函数定义。
def greet(first_name, last_name):
print(f"Hello, {first_name} {last_name}!")
greet("John", "Doe") # 输出: Hello, John Doe!
默认参数
默认参数允许为某些参数设置默认值。如果调用时未传递这些参数,则会使用默认值。默认参数必须放在位置参数之后。
def greet(first_name, last_name="Smith"):
print(f"Hello, {first_name} {last_name}!")
greet("John") # 输出: Hello, John Smith!
greet("Jane", "Doe") # 输出: Hello, Jane Doe!
可变参数 (*args)
可变参数允许函数接受任意数量的位置参数,参数会被打包成一个元组。
def greet(*names):
for name in names:
print(f"Hello, {name}!")
greet("John", "Jane", "Doe")
# 输出:
# Hello, John!
# Hello, Jane!
# Hello, Doe!
关键字参数 (**kwargs)
关键字参数允许传递任意数量的键值对,参数会被打包成一个字典。
def greet(**info):
for key, value in info.items():
print(f"{key}: {value}")
greet(first_name="John", last_name="Doe", age=30)
# 输出:
# first_name: John
# last_name: Doe
# age: 30
命名关键字参数
命名关键字参数需要在函数定义中使用 * 分隔,之后的参数必须通过关键字传递。
def greet(first_name, *, age, hobby):
print(f"{first_name} is {age} years old and likes {hobby}.")
greet("John", age=30, hobby="swimming")
# 输出: John is 30 years old and likes swimming
参数组合
Python 支持将以上几种参数方式组合使用,但必须遵循顺序:位置参数、默认参数、可变参数、命名关键字参数、关键字参数。
def greet(greeting, *names, punctuation="!"):
for name in names:
print(f"{greeting}, {name}{punctuation}")
greet("Hello", "John", "Jane", punctuation=".")
# 输出:
# Hello, John
# Hello, Jane
注意事项
默认参数必须是不可变对象(如字符串、数字、元组)。
可变参数和关键字参数在调用时可以灵活传递,但需要注意顺序和匹配规则。
参数组合时,尽量保持函数调用的清晰性和可读性。
通过灵活运用这些传参方式,可以提高代码的复用性和可读性,满足各种复杂的需求。

385

被折叠的 条评论
为什么被折叠?



