函数参数 f_arg, *args, **kwargs

当需要给函数传参时,可以通过运用不同的形参来传递,达到参数不同的使用目的。

简单来说:f_arg就是传递的第一个参数,类似于C++中的普通参数; *args 传递的是一个参数的list; **kwargs 传递的是一个有key的dict。

下面通过一个例子来说明这三个参数的区别。

def generator_function(f_args,*args ,**kwargs):
    
    yield f_args
    
    for arg in args:
        yield ("arg in *args:", arg)
        
    for key,value in kwargs.items():
        yield(" %s==%s in **kwargs:"%(key, value))
        

for item in generator_function(123,"hello","haha",3421,asd=123,fff="433"):
    print(item)

结果:

123
('arg in *args:', 'hello')
('arg in *args:', 'haha')
('arg in *args:', 3421)
 fff==433 in **kwargs:
 asd==123 in **kwargs:

 什么情况下使用 *args ,**kwargs?

比如一个定时产出的自动化程序,需要指定日期和时间去运行,同时有几种版本或者模式。

就可以指定key等于不同的值,传入main函数中,来控制程序按照指定的模式运行了。

例如:有一个小时级的文本挖掘程序, 可以设定两个key:  date , interval, 

通过传入参数: date="2016-09-10" ,  interval ="1", 指定挖掘2016年9月10日的数据,同时一个小时挖掘一次。   如果传入 interval = "8",  指定8小时挖掘一次。

原文地址:https://www.cnblogs.com/bradleon/p/5938679.html