Clunky arg检查Python

pol*_*kid 2 python kwargs

我有一个功能:

def check_user(self, **args):
    allowed = ['name', 'screen_name', 'url', 'description', 'location']
    arg_check = [val for val in args if val not in allowed]
    if arg_check:
        raise ValueError('Invalid args: ' + ' '.join(arg_check))
Run Code Online (Sandbox Code Playgroud)

它有效,但感觉非常单调.有没有更好的方法来检查这个?我希望不必写一个很大的if/else语句.

这样我就可以轻松地在循环中遍历args.

Fas*_*tle 10

我认为更pythonic版本会在函数定义中显式声明允许的参数.只需替换None为您的默认值即可.

def check_user(self, name=None, screen_name=None, url=None,
               description=None, location=None):
    # Do something here
    # ...
Run Code Online (Sandbox Code Playgroud)