python中函数的参数类型

  • Post category:Python

在Python中,函数的参数类型可以分为四种:位置参数、默认参数、可变参数和关键字参数。

1. 位置参数

位置参数是指函数定义时指定的参数,调用函数时必须传入相应的参数。例如:

def add(x, y):
    return x + y

result = add(1, 2)
print(result) # 输出3

在上面的示例中,add函数定义了两个位置参数xy,调用函数时必须传入两个参数。在调用add函数时,传入的参数12分别与位置参数xy对应,最终返回结果为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函数定义了三个参数:ipportprotocol。其中,portprotocol都设置了默认值,如果在调用函数时没有传入对应的参数,函数会使用默认值。例如,在第一个示例中,build_url('127.0.0.1')中只传入了一个参数ip,因此portprotocol使用的是默认值。最终返回结果为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函数定义了三个参数:nameagegender。在调用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函数的三个参数都使用了参数名进行传入,最终打印结果与上一个示例相同。