【Python】理解python中*args和**kwargs


在Python编程中,*args与 **kwargs是两个重要概念,可以让我们编写灵活且可扩展的函数

关于*args

*args用于将不定数量的非关键字参数传递给函数,args是一个元组,包含了所有传递给函数的非关键字参数
使用示例:

def my_function(*args):
	for arg in args:
		print(arg)
my_function(1, 2, 3)
'''
代码输出
1
2
3
'''

使用场景:
当我们不知道函数会接受多少参数时,*args是非常有用的

def add_numbers(*args):
    return sum(args)

numbers = [1, 2, 3, 4]
print(add_numbers(*numbers))  #使用*展开列表
'''
代码输出:
10
'''
# 1+2+3+4=10

关于**kwargs

**kwargs用于将不定数量的关键字参数传递给函数,kwargs是一个字典,包含了所有传递给函数的关键字参数
使用示例:

def test_func(arg1, arg2, **kwargs):
    print("arg1:", arg1)
    print("arg2:", arg2)
    for key, value in kwargs.items():
        print(key, value)
test_func("hello", "world", option1 = "value1", option2 = "value2")
'''
	代码输出:
	arg1: hello   
	arg2: world   
	option1 value1
	option2 value2
'''

当不知道函数会接收多少个关键字参数时,**kwargs 是非常有用的

同时使用*args与**kwargs

可以在一个函数中同时使用*args与**kwargs
使用示例:

def my_function(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)
my_function(1, 2, 3, name="John", age=30)
'''
代码输出:
args: (1, 2, 3)
kwargs: {'name': 'John', 'age': 30}
'''

动态函数调用

def call_function(func, *args, **kwargs):
    return func(*args, **kwargs)

def add(a,b):
    return a+b

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}"

print(call_function(add, 1,2)) # 输出3
print(call_function(greet, "Alice")) # 输出 Hello Alice
print(call_function(greet, "Bob", greeting = "Hi")) # 输出 Hi Bob

注意事项

1.在定义函数时,*args 必须出现在 **kwargs 之前。

def my_function(*args, **kwargs):
    pass

2.当在函数中同时使用普通参数、*args 和 **kwargs 时,顺序必须是:普通参数,*args,**kwargs

def my_function(arg1, arg2, *args, **kwargs):
    pass

扩展

items()是字典对象的一个方法,用于返回一个字典中所有的键值对

my_dict = {0:"a", 1:"b", 2:"c"}
for key,value in my_dict.items():
    print(key, value)
'''
代码输出:
	0 a
	1 b
	2 c
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值