在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。
Python函数参数类型
- 必传参数:最常用的,必传确定数量的参数
- 默认参数:在调用函数时可以传也可以不传,如果不传将使用默认值
- 可变参数:可变长度参数
- 关键字参数:长度可变,但是需要以 key-value 形式传参
必传参数
必传参数是指在调用函数时必须提供的参数,函数定义中没有默认值。如果在调用函数时没有传递必传参数,Python解释器将会报错。示例代码如下:
def hello(name):
print("hello,"+ name + "!")
hello('Muller')
在上面的代码中,name
是一个必传参数,调用 hello
函数时必须提供一个值。在这个例子中,函数被调用时传递的参数是"Muller"
。输出结果为 "Hello, Muller!"
。
当然我们也可以有多个必传参数,当有多个必传参数时,有多少个,我们就要传多少个,示例如下:
def add(a, b):
return a + b
print(add(1, 2))
####
输出结果为3
- add 函数有两个参数,第一个参数是 a,第二个参数是 b
- 传入的两个整数按照位置顺序依次赋给函数的参数 a 和 b,参数 a 和参数 b 被称为位置参数
注:传递的参数个数必须等于参数列表的数量
- 根据函数定义的参数位置来传递参数,要求传递的参数与函数定义的参数两者一一对应
- 如果 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时会报错,如下
def add(a, b):
return a + b
print(add(1))
#####
TypeError: add() missing 1 required positional argument: 'b'
--------------------------
def add(a, b):
return a + b
print(add(1,2,3))
#####
TypeError: add() takes 2 positional arguments but 3 were given
默认参数
默认参数是在函数定义时给参数赋予一个默认值,如果在调用函数时没有传递对应的参数,函数将使用默认值。使用默认参数,可以简化函数的调用,尤其是在函数需要被频繁调用的情况下,示例代码如下:
def greet(name, greeting="Hello"):
print(greeting + ", " + name + "!")
greet("Bob")
greet("Charlie", "Hi")
#####
输出如下:
Hello, Bob!
Hi, Charlie!
在上面的代码中,greeting
是一个默认参数,它的默认值是"Hello"
。在第一个调用中,只传递了必传参数"Bob"
,默认参数greeting
使用了它的默认值,输出结果为"Hello, Bob!"
。
在第二个调用中,传递了必传参数"Charlie"
和自定义的默认参数 "Hi"
,输出结果为 "Hi, Charlie!"
。
默认参数的使用可以使函数调用更加灵活,可以根据需求选择是否传递该参数,如果不传递则使用默认值。
注:声明函数时,当同时存在必传参数和默认参数,形参的顺序必须是 (必传参数 , 默认参数),不能默认参数在前
可变参数
可变参数是指在函数定义时不确定参数个数的情况下,可以接收任意数量的参数。Python提供了两种方式来实现可变参数:使用星号()和双星号(*)。
- 使用星号(*)来定义可变参数:
示例代码如下:
def calculate_sum(*numbers):
total = 0
for number in numbers:
total += number
return total
result = calculate_sum(1, 2, 3, 4, 5)
print(result)
#####
输出结果为15
在上面的代码中,*numbers
是一个可变参数,它可以接收任意数量的参数。在函数体内,我们使用一个循环遍历所有的参数,并将它们累加到total
变量中。通过调用 calculate_sum
函数,并传递参数1, 2, 3, 4,5
,我们可以得到它们的总和,输出结果为 15
。
注:
- args是一个元组类型
- 可变参数可不传,也可以传很多个值
*(2, 3, 4, 5)
,在元组or列表前面加一个*
,代表将里面的每个元素独立出来,单独作为一个形参传进去,也称为元组解包
关键字参数
关键字参数是指在函数调用时,通过指定参数名来传递参数值。关键字参数的主要特点是可以不按照定义顺序传递参数,并且可以只传递部分参数。关键字参数的使用可以增加函数调用的可读性,避免参数顺序混淆的问题。示例代码如下:
def greet(name, greeting):
print(greeting + ", " + name + "!")
greet(greeting="Hi", name="Alice")
#####
输出结果为:
Hi, Alice!
在上面的代码中,通过指定参数名来传递参数值,我们可以按照任意顺序传递参数。在这个例子中,函数被调用时使用了关键字参数 greeting="Hi"
和name="Alice"
,输出结果为 "Hi, Alice!"
。
总结
Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。必传参数在调用函数时必须提供,没有默认值;默认参数在函数定义时给参数赋予一个默认值,在调用函数时可以不传递该参数;可变参数可以接收任意数量的参数,使用星号()和双星号(*)来定义;关键字参数通过指定参数名来传递参数值,可以不按照定义顺序传递参数。掌握这些不同类型的函数参数的使用方法,可以让我们更好地编写灵活、可扩展的函数。