Python函数传参:位置参数、默认参数、可变参数、关键字参数
Python 中,函数传参可以分为四种:位置参数、默认参数、可变参数、关键字参数。下面将详细介绍这四种传参方式。
1. 位置参数
位置参数是指函数调用时,按照参数顺序依次传递的参数。例如下面的例子:
def say_hello(greeting, name):
print("{},{}!".format(greeting, name))
say_hello("Hello", "Tom")
这里的 greeting 和 name 都是位置参数,分别表示问候语和名字。函数调用时,先传递 Hello,再传递 Tom,按照参数定义的顺序传递参数。这种方式是函数传参最常用的方式,也是最基本的方式。
2. 默认参数
默认参数是指在定义函数时,为某些参数指定一个默认值,这样在调用函数时,如果没有传递这个参数,就会使用默认值。例如下面的例子:
def say_hello(name, greeting="Hello"):
print("{},{}!".format(greeting, name))
say_hello("Tom") # 输出 "Hello,Tom!"
say_hello("Bill", "Hi") # 输出 "Hi,Bill!"
这里的 greeting 是默认参数,被指定为 Hello。在第一个函数调用中,只传了一个参数 Tom,所以使用了默认值;在第二个函数调用中,明确传递了 Hi,覆盖了默认值。
值得注意的是,如果有多个默认参数,传参时需要按照参数顺序传递有默认值的参数,也可以使用关键字参数来指定。
3. 可变参数
可变参数是指在定义函数时,用 * 表示一个参数可以传入多个值,这些值将会被组合成一个元组传递到函数中。例如下面的例子:
def greet_people(*names):
for name in names:
print("Hello, {}!".format(name))
greet_people("Tom", "Bob", "Alice")
这里的 *names 表示可以传递任意个参数,这些参数将会被组合成一个元组传递到函数中。在函数体中,使用 for 循环遍历元组,从而输出所有的问候语。这种方式可以方便地处理不定数量的参数。
除了 *,也可以使用 ** 表示可变关键字参数,这种参数将会被组合成一个字典传递到函数中。
4. 关键字参数
关键字参数是指在调用函数时,使用 key=value 的方式来传递参数,这样函数在接收到参数时,可以按照参数名来识别,进而进行处理。例如下面的例子:
def greet_meetup(name, location, date):
print("Hello, {}! We are glad to invite you to our meetup at {}, on {}.".format(name, location, date))
greet_meetup(name="Tom", date="2021-10-01", location="New York")
这里的 name、location、date 都是关键字参数。在函数调用时,使用 key=value 的方式传递参数,可以指定参数的名称和值。因此,在函数体中,可以按照参数名来获取参数值,进而进行后续处理。这种方式可以使得函数调用更加灵活和可读。
除了以上四种传参方式,还可以通过混合使用这四种方式来传递参数,以满足不同场景的需要。例如,可以同时使用位置参数和关键字参数,也可以使用默认参数和可变参数等组合方式。因此,了解 Python 函数传参的不同方式,可以帮助我们更好地编写函数,提高代码效率和可维护性。
