问题描述
考虑以下代码:
def handle_lambda(event,context):
multivalue_params = event.get('multiValuequerystringparameters',{})
print(multivalue_params)
print(type(multivalue_params).__name__)
print(type(event).__name__)
输出:
None
nonetype
dict
给什么?为什么字典默认参数在事件字典上不起作用?是否有我所缺少的最佳实践?
解决方法
这是字典中非常常见的行为,当该键存在:
>>> event = {'multiValueQueryStringParameters': None}
>>> multivalue_params = event.get('multiValueQueryStringParameters',{})
>>> print(multivalue_params)
None
>>> print(type(multivalue_params).__name__)
NoneType
>>> print(type(event).__name__)
dict
dict.get
仅在键完全不存在时返回默认参数。您可能想要这样的东西:
# be prepared for both non-existent keys and None values:
multivalue_params = event.get('multiValueQueryStringParameters') or {}
# or expect the key to exist but to potentially be None:
multivalue_params = event['multiValueQueryStringParameters']
if multivalue_params is not None:
# process only in this case