【发布时间】:2017-05-17 22:39:04
【问题描述】:
我正在尝试理解下一个验证的第一部分。我可以安全地假设表达式“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")
'
【问题讨论】:
-
不,您不能安全地假设表达式
if not set(sys.argv)始终为假。您的程序之前可能已经清除了sys.argv。 -
如果您使用 Python C API 调用脚本,
sys.argv也可能为空。