mapping.get()
支持“默认”参数:
os.environ.get("CDO_TBLPATH", '')
默认为 return None
,但通过指定一个空字符串,即使CDO_TBLPATH
未定义,您的连接也将起作用。
None
如果.get()
返回 None,你不能让连接神奇地返回;您可以使用None
在__add__
方法中返回的自定义类,但我不确定这是否非常易读。
如果在未定义环境变量的情况下需要跳过任何选项(不是连接),则最好拆分测试:
table_options = (
(lambda: iTBLFilePath, lambda: iTBLFilePath)
(lambda: os.environ.get("CDO_TBLPATH") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_TBLPATH"] + os.environ["CDO_INSTANCE_TYPE"] + '.tbl'),
(lambda: os.environ.get("CDO_ROOT") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_ROOT"] + "/cdo/tbl/" + os.environ["CDO_INSTANCE_TYPE"] + ".tbl"),
(lambda: True, lambda: None),
)
self. _TBLFilePath = next(opt() for tst, opt in table_options if tst())
这定义了一系列测试,并使用与第一个成功的测试关联的值。