为什么即使我指定False,absl标志也会返回True



这是代码。我试图通过使用给这个参数"False"值

python file.py --add_depth_loss False

但它仍然打印";真的;。。。。为什么?

from absl import flags, app
FLAGS = flags.FLAGS
flags.DEFINE_boolean('add_depth_loss', None, 'sss')
flags.mark_flag_as_required('add_depth_loss')
def main(_):
print(FLAGS.add_depth_loss)
if __name__ == '__main__':
app.run(main)

经过一些研究,我发现boolboolean标志不是这样使用的。它实际上是一个";设置为True";选项如果要设置False,则需要执行---option=false,而不是像其他类型那样执行--option False,否则它总是返回True

即使您设置了

flags.bool('option', None, 'xxx')
flags.mark_as_required('option')

并且通过--option False,它也返回True

嗯,我无言以对。。。。

使用python file.py --noadd_depth_lossadd_depth_loss设置为False

只是从文档中添加更多上下文https://abseil.io/docs/python/guides/flags

DEFINE_bool或DEFINE_boolean:通常不接受参数:pass--myflag将FLAGS.myflag设置为True,或--nomyflag将FLAGS.miyflag设为False--myflag=true和--myflag=false也受支持,但不推荐使用

最新更新