Python关键字args vs kwargs

| 这可能是一个简单的问题: 下列各项之间有什么区别:
def myfunc(a_list = [], **kwargs):
    my_arg = kwargs.get(\'my_arg\', None)
    pass
def myfucn(a_list = [], my_arg = None):
    pass
如果没有,哪个会被认为更pythonic? 谢谢, -马特     
已邀请:
对于一个简单的函数,使用Pythonic来显式定义您的参数更为合适。除非您有合法的接受任何数目的未知或可变参数的要求,否则
**kwargs
方法会增加不必要的复杂性。 附:永远不要在函数定义中初始化列表!由于列表是可变的,这可能导致持久保留,从而导致意外结果!     
第一个几乎可以接受提供的任何关键字参数(无论它仅使用其中一个),而第二个只能接受两个。两者都不是Pythonic,您只需使用适合该任务的工具即可。 另外,第二个不是\“关键字参数\”,而是\“默认值\”。     
第二种选择允许my_arg作为位置而不是关键字参数传递。当您实际上不使用
**kwargs
时,我会认为这很不合逻辑。     

要回复问题请先登录注册