如何解决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
时,我会认为这很不合逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。