我正在重构一个“大型” python类,并且试图减少重复以使代码更短,更易读。
if 'name' not in item:
error = "no name key found in definition"
return False, error, {}
if 'type' not in item:
error = "no type key found in definition"
return False, error, {}
if 'of' not in item:
error = "no of key found in definition"
return False, error, {}
基本上,我已经将json输入转换为字典,并且正在查看是否存在相同的特定元素。如果输入中没有键,该函数将返回False,一条信息消息和一个空字典。
我可以创建一个使用参数名称并评估其存在性的类方法,但是我想知道在python 3.x中是否有更好的方法
答案 0 :(得分:1)
您可以使用循环和字符串插值将其减少为:
for key in ('name', 'type', 'of'):
if key not in item:
error = "no {} key found in definition".format(key)
return False, error, {}
答案 1 :(得分:0)
好吧,可以对这段代码进行重构,以避免重复:
for part in ['name', 'type', 'of']:
if part not in item:
error = "no {} key found in definition".format(part)
return False, error, {}
不确定我可以在Python中添加很多有关验证的最佳做法。我认为使用这样的通用构造几乎可以按需完成。
答案 2 :(得分:0)
如果您要明确命名丢失的密钥,而不是执行类似的操作
CTRL + Enter Executes
您可能应该做对并遍历所有对象。调整Dan D.的解决方案:
if "name" not in item or "type" not in item or "of" not in item:
return False, "key missing in definition", {}
或类似的东西。如果缺少名称和类型怎么办?您只会在示例中看到缺少的姓名。