如果string不是none,则Python将字符串转换为type

时间:2015-03-20 20:57:19

标签: python casting nonetype

我有一长串要投射和分配的值。每个值都有可能为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

1 个答案:

答案 0 :(得分:1)

没有内置的方法可以比您已经发现的更容易。但编写自己的函数是 批准的方法,以减少代码重复并提高重复任务的可读性。

但请注意,您的代码和说明并不完全匹配:chr(input.something) if input.something else None如果None有任何错误值,则为input.something,例如0或空字符串 - 明确测试input.something is not None,如果这是你的意思。