【Python】**kwargs和takes 1 positional argument but 2 were g
Python的函数定义中可以在参数里添加**kwargs——简单来说目的是允许添加不定参数名称的参数,并作为字典传递参数。但前提是——你必须提供参数名。 例如下述情况: 有如下输入: 这一切都符合常理。但是当我使用一个字典传递的时候: 我一开始以为是__init__太娇气了,换成一般办法: 包括定义在__main__下的函数也是如此: 但是当我在f1参数前加一个参数名: 问题立刻解决。 ? ? 思考:我们在先前的错误尝试中,一直传入的是个单纯的字典。虽然**kwargs提供将参数转成字典的功能,但是直接传入字典并不会使其理解成参数。实质上Python解释器认为我们输入的是作为参数值的字典,而并未携带参数名称,而Python函数机制中“固定名称”的参数应写在**kwargs的前面,因此误以为我们传入了一个“固定名称”参数,事实上我们先前的定义中并未加入“固定名称”参数,所以报错takes 1 positional arguments but 2 was given。 如果真的要传入字典怎么办呢?这就简单了,直接把**kwargs改成kwargs即可: 这次经历使我加深了对**kwargs特殊参数的理解。以后的学习更要注意细节! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |