gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:06 27 4
gpt4 key购买 nike

我正在尝试根据环境变量的返回值进行条件赋值。

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

谢谢。

最佳答案

mapping.get()支持“默认”参数:

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

默认返回 None,但通过指定一个空字符串,即使未定义 CDO_TBLPATH,您的连接也将起作用。

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

如果在未定义环境变量的情况下需要跳过任何选项(不是连接),最好将测试分开:

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())

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

关于Python:字符串与 None 连接以返回 None?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com