python - 检查环境变量是否存在的好习惯是什么?

标签 python python-2.7 python-3.x if-statement environment-variables

我想检查我的环境中是否存在 Python 中的变量,例如 "FOO"。为此,我使用了 os 标准库。在阅读了图书馆的文档后,我想出了两种方法来实现我的目标:

方法一:

if "FOO" in os.environ:
    pass

方法二:

if os.getenv("FOO") is not None:
    pass

我想知道哪种方法(如果有的话)是一个好的/首选条件以及为什么。

最佳答案

使用第一个;它直接尝试检查是否在 environ 中定义了某些内容。尽管第二种形式同样有效,但它缺乏语义,因为如果它存在,您会返回一个值,并且使用它进行比较。

您正在尝试查看是否存在某些东西 in environ,为什么您要 get 只是为了比较它然后 扔掉它

这正是 getenv 所做的:

Get an environment variable, return None if it doesn't exist. The optional second argument can specify an alternate default.

(这也意味着您的检查可能只是 if getenv("FOO"))

你不想得到它,你想检查它是否存在。

无论哪种方式,getenv 只是 environ.get 的一个包装器,但您看不到人们检查映射中的成员资格:

from os import environ
if environ.get('Foo') is not None:

总而言之,使用:

if "FOO" in os.environ:
    pass

如果你只是想检查是否存在,而如果你真的想用你可能得到的值做某事,请使用 getenv("FOO")

关于python - 检查环境变量是否存在的好习惯是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40697845/

相关文章:

python-3.x - Flask 迁移失败

python - Scapy sniff() 似乎没有捕获 TCP 数据包,只显示以太网帧

Python IMAP - 使用嵌入的内嵌图像呈现消息正文

regex - 使用正则表达式查找 ü(带有变音符号的 u)

python - 从 djangoviews.py 中找不到 Matlab 脚本

python - 如何获取 QTreeWidget 中被单击的项目?

python - 使用 psycopg2 将值从 pandas 系列传递到 PostgreSQL 查询

python - Tkinter (Python 3.x) 中的不同 "Drag and Drop"图像

python-2.7 - 将进度条添加到 gdal.Warp()

python - 为什么 Python 2 认为这些字节是麦克风表情符号而 Python 3 却不这样认为?