【问题标题】:Question About Automatically set method parameters关于自动设置方法参数的问题
【发布时间】:2019-03-12 07:49:21
【问题描述】:

有字典和方法。

ALL_DIC = {"A":"a", "B":"b", "C":"c", "D":"d", "E":"e"}

def something(A=None, B=None, D=None):
    print(A,B,D)

something(**ALL_DIC)

出现以下错误:

Traceback (most recent call last):
  File "D:/crawl_master/nolja.py", line 186, in <module>
    something(**ALL_DIC)
TypeError: something() got an unexpected keyword argument 'C'

所以我使用了以下内容, 但我不喜欢它。我想知道是否有更好的方法或库。

import inspect
args, _, _, values = inspect.getargspec(something)
for key in list(ALL_DIC.keys()):
    if key not in args:
        del ALL_DIC[key]

something(**ALL_DIC)

我想要一些建议。感谢您阅读。

【问题讨论】:

    标签: python-3.x parameters arguments


    【解决方案1】:

    更简单的方法是让something 接受可变关键字参数:

    def something(A=None, B=None, D=None, **kwargs):
        print(A,B,D)
    

    这样传递给something 的任何其他关键字参数都将被接受(如果您不使用kwargs,则会被忽略)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多