How To Check If A Key in **kwargs Exists?
Python 3.2.3.这里列出了一些对常规VaR有效的想法,但似乎**Kwarg根据不同的规则发挥作用…那么,为什么这不起作用,我如何检查**Kwargs中的键是否存在?
1 2 | if kwargs['errormessage']: print("It exists") |
我也认为这应该管用,但不行--
1 2 | if errormessage in kwargs: print("yeah it's here") |
我猜是因为Kwargs是无可辩驳的?为了检查是否有一个特定的键,我是否需要迭代它?
你想要
1 2 | if 'errormessage' in kwargs: print("found it") |
得到EDOCX1的值〔0〕。
1 2 | if 'errormessage' in kwargs: print("errormessage equals" + kwargs.get("errormessage")) |
这样,
第二个例子,
我应该提到,字典还有一个方法
DSM和Tadeck的答案直接回答您的问题。
在我的脚本中,我经常使用方便的
1 2 3 | def my_print(*args, **kwargs): prefix = kwargs.pop('prefix', '') print(prefix, *args, **kwargs) |
然后:
1 2 3 4 | >>> my_print('eggs') eggs >>> my_print('eggs', prefix='spam') spam eggs |
如您所见,如果
这通常是为任何类型的函数编写包装器的一个简洁易读的方法:总是传递您不理解的参数,甚至不知道它们是否存在。如果您总是通过
就是这样:
1 2 | if 'errormessage' in kwargs: print("yeah it's here") |
如果钥匙在字典里,你需要检查一下。它的语法是
您链接的想法(这些想法)包含一些示例,用于检查
一种方法是自己添加它!怎样?通过将
1 2 3 4 5 6 7 8 9 10 11 12 13 | import sys def myfunc(**kwargs): args = {'country':'England','town':'London', 'currency':'Pound', 'language':'English'} diff = set(kwargs.keys()) - set(args.keys()) if diff: print("Invalid args:",tuple(diff),file=sys.stderr) return args.update(kwargs) print(args) |
默认值在字典
你可以自己轻松地发现这些东西:
1 2 3 4 5 6 | def hello(*args, **kwargs): print kwargs print type(kwargs) print dir(kwargs) hello(what="world") |