使用os.getenv
检索环境变量时,默认行为返回os.getenv
的类型。这是有问题的,因为利用这些变量的任何下游方法/功能都可能会定义为明确接受Optional[str]
类型。 是否有接受的用法来解决此问题或强制执行str
返回类型?
在str
中getenv
的存根文件定义中,您可以找到typeshed的返回类型为getenv
或Optional[str]
,具体取决于Union[str, T_]
kwarg的用法。
我现在可以看到的四个选项是:
default
类型作为参数。感觉不太正确,因为可能无法以Optional[str]
类型有意义的方式来构造函数/方法。即,该操作没有理由将特定参数设为Optional
。None
kwarg用于default
,并提供getenv
默认值。这似乎更正确,但是要求每次使用str
时都设置一个默认值。我唯一看到的问题是这样做可能会混淆测试或在不同环境中的使用。getenv
返回的值的类型明确设置为str。我真的不喜欢这样,因为它期望始终正确配置环境,根据我的经验,这不是一个很好的假设。在下面的示例中引发mypy错误。
getenv
以上引发mypy错误:
错误:“ some_func”的参数1具有不兼容的类型“ Optional [str]”;预期的“ str”
[使用os.getenv检索环境变量时,默认行为返回Optional [str]类型。这是有问题的,因为任何利用这些变量的下游方法/功能都将...
tl; dr
[SOME_VAR
是可选的,因为它可以是None