python - 检查多个变量是否不是None的最pythonic方法是什么?

标签 python

如果我有这样的构造:

def foo():
    a=None
    b=None
    c=None

    #...loop over a config file or command line options...

    if a is not None and b is not None and c is not None:
        doSomething(a,b,c)
    else:
        print "A config parameter is missing..."

python 中检查所有变量是否都设置为有用值的首选语法是什么?是像我写的那样,还是其他更好的方法?

这与这个问题不同: not None test in Python ...我正在寻找检查许多条件是否不是“无”的首选方法。我输入的选项看起来很长而且不是pythonic。

最佳答案

真的可以简单得多

if None not in (a, b, c, d):
    pass

更新:

正如 slashCoder 正确指出的那样,上面的代码隐含地执行 a == None、b == None 等。这种做法是不受欢迎的。相等运算符可以重载,not None 可以等于 None。你可能会说它永远不会发生。好吧,它没有,直到它发生。所以,为了安全起见,如果你想检查没有一个对象是 None ,你可以使用这种方法

if not [x for x in (a, b, c, d) if x is None]:
    pass

它有点慢,表达力较差,但它仍然相当快和短。

关于python - 检查多个变量是否不是None的最pythonic方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360956/

相关文章:

python - Oracle/Python 转换为字符串 -> HEX(对于 RAW 列) -> varchar2

python - 我的文本分类器模型无法通过多个类别得到改进

Python读取X和Y值并分配给Z特定的XY对

python - 如何快速计算一组集合的所有交集的包含顺序

python - 如何从过程中将项目 append 到全局列表

python - 我应该如何绘制 XYZ 数据点以在 python 中创建 RGB 深度图像

python - 在线性回归中获得非常高的值

python3 datetime.datetime.strftime 无法接受 utf-8 字符串格式

python - 忽略 SublimeLinter3(flake8 插件)中的特定警告

python - 语法错误 : positional argument follows keyword argument: