4

我遇到了以下有趣的错误:

parser.add_option("-n", "--number", metavar="NUMBER", type="int", 
                  help="number is NUMBER")
(options, args) = parser.parse_args()

if options.number: # User added a number
  do something
  exit(0)

过了一会儿,我发现如果数字是,我的应用程序不起作用,0但这应该是有效的数字(它应该 >= 0)。问题0False

我应该将其更改为:

if options.number is not None:

或更复杂的东西?

4

2 回答 2

4

在 Python 中,整数可以用作布尔值,而任何非零值都被解析为True和。因此,如果您想检查选项是否已设置,则必须进行检查(这意味着该选项未设置)。0False--numberNone

所以:

if options.number is not None:

很好。

于 2012-01-05T11:43:07.420 回答
2

此外,请考虑使用 argparse 模块而不是 optparse,因为后者自 Python 2.7 以来已被弃用。argparse 文档的最后一部分是关于升级 optparse 代码:

http://docs.python.org/library/argparse.html

不过,我不知道它如何处理您的特定问题。

于 2012-01-05T13:44:28.170 回答