我试着做一个基于环境变量返回值的条件赋值。在
self._TBLFilePath = iTBLFilePath or os.environ.get("CDO_TBLPATH") + os.environ.get("CDO_INSTANCE_TYPE") + ".tbl" or os.environ.ge t("CDO_ROOT") + "/cdo/tbl/" + os.environ.get("CDO_INSTANCE_TYPE") + ".tbl"
问题是,当CDO TBLPATH未定义时,我得到一个没有连接错误的字符串。我想知道是否有一种方法可以强制None+string也返回一个None,或者有没有其他方法可以克服这个问题?在
谢谢。在
为此,我有时借用SQL中的
coalesce()
函数。在Python中,它是这样工作的:或者更好
^{pr2}$它返回第一个非
None
参数,如果没有参数,则返回None
。在如果
.get()
没有默认参数,可以这样做^{} 支持“default”参数:
默认值是返回
None
,但是通过指定一个空字符串,即使没有定义CDO_TBLPATH
,连接也可以工作。在如果
.get()
返回None,则不能让串联神奇地返回None
;您可以在__add__
方法中使用返回None
的自定义类,但我不确定这是否非常可读。在如果没有定义环境变量,如果需要跳过任何选项(而不是连接),最好将测试分开:
^{pr2}$这定义了一系列测试,并使用与成功的第一个测试相关联的值。在
相关问题 更多 >
编程相关推荐