为什么需要验证 'if not set(sys.argv)'?

Why would the validation 'if not set(sys.argv)' be needed?

我正在尝试了解下一次验证的第一部分。我可以安全地假设表达式 'if not set(sys.argv)' 始终为 False 吗?代码来自Ironic Project.

if not set(sys.argv) & valid_commands:

根据 docs,如果命令 运行 带有 '-c' 选项,argv[0] 设置为字符串 '-c'。这仍然是一个非空集。示例:

python -c '
import sys
print(sys.argv[0])
if not set(sys.argv):
    print("empty")
else:
    print("non-empty")
'

你读错了。 Python 的 not 的优先级非常低,低于 & 的优先级(这不是逻辑与)。

if not set(sys.argv) & valid_commands:

应该读作

if not (set(sys.argv) & valid_commands):

正在测试 sys.argv 是否包含集合 valid_commands 的任何元素。

这里没有"first part"。

if not set(sys.argv) & valid_commands:

等同于

if not (set(sys.argv) & valid_commands):