在Python中,函数的参数类型可以分为四种:位置参数、默认参数、可变参数和关键字参数。
1. 位置参数
位置参数是指函数定义时指定的参数,调用函数时必须传入相应的参数。例如:
def add(x, y):
return x + y
result = add(1, 2)
print(result) # 输出3
在上面的示例中,add
函数定义了两个位置参数x
和y
,调用函数时必须传入两个参数。在调用add
函数时,传入的参数1
和2
分别与位置参数x
和y
对应,最终返回结果为3
。
2. 默认参数
默认参数是指在函数定义时为参数设置默认值,如果调用函数时没有传入相应的参数,函数会使用默认值。例如:
def build_url(ip, port=80, protocol='http'):
url = f"{protocol}://{ip}:{port}"
return url
result1 = build_url('127.0.0.1')
result2 = build_url('127.0.0.1', 8080)
result3 = build_url('127.0.0.1', 8080, 'https')
print(result1) # 输出 http://127.0.0.1:80
print(result2) # 输出 http://127.0.0.1:8080
print(result3) # 输出 https://127.0.0.1:8080
在上面的示例中,build_url
函数定义了三个参数:ip
、port
和protocol
。其中,port
和protocol
都设置了默认值,如果在调用函数时没有传入对应的参数,函数会使用默认值。例如,在第一个示例中,build_url('127.0.0.1')
中只传入了一个参数ip
,因此port
和protocol
使用的是默认值。最终返回结果为http://127.0.0.1:80
。
3. 可变参数
可变参数是指在函数定义时,使用了*
或**
前缀的参数,可以接收任意个参数。其中,*
用于接收位置参数,**
用于接收关键字参数。例如:
def show(*args, **kwargs):
print(args) # 输出 ('one', 'two', 'three')
print(kwargs) # 输出 {'name': 'Tom', 'age': 18}
show('one', 'two', 'three', name='Tom', age=18)
在上面的示例中,show
函数定义了两个可变参数*args
和**kwargs
,分别用于接收任意个位置参数和关键字参数。在调用show
函数时,传入了三个位置参数和两个关键字参数。*args
接收了三个位置参数,结果为('one', 'two', 'three')
,**kwargs
接收了两个关键字参数,结果为{'name': 'Tom', 'age': 18}
。
4. 关键字参数
关键字参数是指在函数调用时,使用指定参数名传入参数。例如:
def print_info(name, age, gender):
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Gender: {gender}")
info = {
'name': 'Tom',
'age': 18,
'gender': 'male'
}
print_info(**info)
在上面的示例中,print_info
函数定义了三个参数:name
、age
和gender
。在调用print_info
函数时,使用了**
传入了一个字典info
,函数会根据字典中的键值对,在对应的参数位置传入对应的值。最终打印结果为:
Name: Tom
Age: 18
Gender: male
除此之外,关键字参数还可以直接使用参数名进行传入,例如:
def print_info(name, age, gender):
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Gender: {gender}")
print_info(name='Tom', age=18, gender='male')
在上面的示例中,print_info
函数的三个参数都使用了参数名进行传入,最终打印结果与上一个示例相同。