欢迎访问宙启技术站
智能推送

Python函数传参的不同方式及巧妙应用

发布时间:2023-07-02 15:16:44

Python函数传参可以通过位置传参和关键字传参两种方式进行,还可以使用默认参数和可变参数进行巧妙的应用。

1. 位置传参:当函数定义时参数的位置和传参的位置一一对应时,可以通过位置传参的方式将值传递给函数,例如:

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

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

2. 关键字传参:通过指定参数的名字传递参数值,可以不按照参数定义的顺序传参,易读性更高,例如:

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

result = add(x=3, y=2)
print(result)  # 输出 5

3. 默认参数:在函数定义时可以为某些参数设置默认值,当调用函数时不传递对应的参数时,将使用默认值,例如:

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

result = add(3)
print(result)  # 输出 5

4. 可变参数:当传递的参数数量不确定时,可以使用可变参数,包括可变长位置参数和可变长关键字参数。

- 可变长位置参数:函数定义时使用*args表示,可以接收任意数量的位置参数,以元组的形式传递给函数,例如:

def add(*args):
    result = 0
    for num in args:
        result += num
    return result

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

- 可变长关键字参数:函数定义时使用**kwargs表示,可以接收任意数量的关键字参数,以字典的形式传递给函数,例如:

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(key + ': ' + value)

print_info(name='Alice', age='20', gender='female')
# 输出
# name: Alice
# age: 20
# gender: female

5. 技巧应用:使用可变长位置参数和可变长关键字参数可以极大地提高函数的灵活性和可扩展性。

- 可变长位置参数的应用:可以接收任意数量的参数,可以用于封装其他函数或者将多个参数打包传递给其他函数。

def add(x, y, *args):
    result = x + y
    for num in args:
        result += num
    return result

result1 = add(1, 2, 3, 4)
result2 = add(1, 2, 3, 4, 5)
print(result1)  # 输出 10
print(result2)  # 输出 15

- 可变长关键字参数的应用:可以接收任意数量的关键字参数,可以用于封装其他函数或者接收不确定的键值对参数。

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(key + ': ' + value)

info1 = {'name': 'Alice', 'age': '20'}
info2 = {'name': 'Bob', 'age': '25', 'gender': 'male'}
print_info(**info1)  # 输出 name: Alice  age: 20
print_info(**info2)  # 输出 name: Bob  age: 25  gender: male

总结:Python函数传参的不同方式可以根据实际需要选择合适的方式,位置传参和关键字传参可以根据调用方式选择使用,而默认参数和可变参数的应用可以提高函数的灵活性和可扩展性。