一、参数的种类
在Python函数中,参数种类分为位置参数、默认参数、可变参数和关键字参数。
1、位置参数
位置参数是最普通的参数,也是必须要传入的参数。例如下面的函数:
def add(num1, num2): return num1 + num2
调用add函数时,必须要传入两个位置参数:
result = add(1, 2) print(result) # 结果为3
2、默认参数
默认参数是在函数定义时设置一个默认值,如果调用时不传入此参数值,则函数会使用默认值。例如下面的函数:
def multiply(num1, num2=1): return num1 * num2
调用multiply函数时,如果不传入第二个参数,则默认使用num2=1:
result = multiply(5) print(result) # 结果为5
3、可变参数
可变参数是指能够处理可变数量参数的函数。使用*args表示,其中args是一个元组,可以在函数中动态调用参数。例如下面的函数:
def add_nums(*args): result = 0 for num in args: result += num return result
调用add_nums函数时,可以传入任意数量的参数:
result = add_nums(1, 2, 3, 4, 5) print(result) # 结果为15
4、关键字参数
关键字参数是指通过“键:值”键值对的方式传入函数的参数,使用**kwargs表示,其中kwargs是一个字典。例如下面的函数:
def print_info(name, age, **kwargs): print("Name:", name) print("Age:", age) for key, value in kwargs.items(): print(key + ": " + value)
调用print_info函数时,可以使用任意数量的关键字参数:
print_info("Lucy", 25, hometown="Beijing", profession="Doctor") # 输出结果: # Name: Lucy # Age: 25 # hometown: Beijing # profession: Doctor
二、参数使用的顺序
在Python函数中,参数需要按照以下顺序使用:
1、位置参数
2、默认参数
3、可变参数
4、关键字参数
例如,在下面的函数中:
def func(num1, num2=0, *args, **kwargs): pass
调用func函数时,必须先传入num1这个位置参数,其次可以选择传入num2这个默认参数,然后再传入可变参数args和关键字参数kwargs。例如:
func(1) # 只传入了num1这个位置参数 func(1, num2=2) # 传入num1和num2两个参数 func(1, 2, 3) # 传入num1、num2和args这个可变参数 func(1, 2, 3, a=1, b=2) # 传入num1、num2、args和kwargs这两个参数
三、传入参数的技巧
在Python函数中,有许多传入参数的技巧可以使用,下面介绍三个常用的技巧。
1、参数解包
参数解包使用*和**符号,可以将元组、列表、字典等数据结构的元素解开后作为参数传入函数中。例如:
def add(num1, num2): return num1 + num2 nums = [1, 2] result = add(*nums) # 将nums中的元素解包传入add函数 print(result) # 结果为3
2、lambda函数作为参数
在Python中,lambda函数是一种匿名函数,可以使用在函数参数中,如下所示:
def operate(func, x, y): return func(x, y) result = operate(lambda x, y: x*y, 2, 3) print(result) # 结果为6
在上述代码中,lambda函数作为第一个参数传入operate函数中。在该例子中,传入的lambda函数会计算x和y的积。
3、参数默认值的设置
参数默认值的设置可以使用None来避免使用默认值。如下所示:
def operate(num1, num2, result=None): if result is None: result = 0 # 以下为函数的计算过程 pass
在上述代码中,函数operate在计算过程中需要使用result这个参数,如果传入的参数没有设置默认值,则result的默认值为None。因此在函数中,需要设置if result is None:的判断来避免出现None值的计算。