Python:用None连接字符串以返回None?

2024-09-30 16:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个基于环境变量返回值的条件赋值。在

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,或者有没有其他方法可以克服这个问题?在

谢谢。在


Tags: or方法instancenonegetostypeenviron
2条回答

为此,我有时借用SQL中的coalesce()函数。在Python中,它是这样工作的:

coalesce = lambda *a: next((i for i in a if i is not None), None)

或者更好

^{pr2}$

它返回第一个非None参数,如果没有参数,则返回None。在

如果.get()没有默认参数,可以这样做

coalesce(get('...'), '')

^{}支持“default”参数:

os.environ.get("CDO_TBLPATH", '')

默认值是返回None,但是通过指定一个空字符串,即使没有定义CDO_TBLPATH,连接也可以工作。在

如果.get()返回None,则不能让串联神奇地返回None;您可以在__add__方法中使用返回None的自定义类,但我不确定这是否非常可读。在

如果没有定义环境变量,如果需要跳过任何选项(而不是连接),最好将测试分开:

^{pr2}$

这定义了一系列测试,并使用与成功的第一个测试相关联的值。在

相关问题 更多 >