我有一长串要投射和分配的值。每个值都有可能为None。如果值为None,我想将其保留为None,否则进行转换。原因是这些值最终将在数据库中结束,我将不得不将None转换为NULL。
到目前为止,我发现这样做的最简单方法是为每个赋值添加内联if语句。
self.number = Decimal(input.number) if input.number else None
我没有发现代码非常吸引人,缺乏可读性,为每个输入值编写这些语句会很繁琐。我更喜欢Decimal(input.number)只返回None,如果input.number是None但似乎不是这种情况。有更简单的方法吗?我想我可以创建自己的Decimal_函数并调用它?
更新
我听从了建议的话,并提出了这个
def dec_(string):
if string is None:
return None
else:
try:
return decimal.Decimal(string)
except:
return None
.....
self.number = dec_(input.number)
现在我只需为每种类型的演员制作一个演员包装器。
UPDATE2:
我认为只需在dec _
中运行try块就可以了def dec_(string):
try:
return decimal.Decimal(string)
except:
return None
答案 0 :(得分:1)
没有内置的方法可以比您已经发现的更容易。但编写自己的函数是 批准的方法,以减少代码重复并提高重复任务的可读性。
但请注意,您的代码和说明并不完全匹配:chr(input.something) if input.something else None
如果None
有任何错误值,则为input.something
,例如0或空字符串 - 明确测试input.something is not None
,如果这是你的意思。