这是代码。我试图通过使用给这个参数"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)
经过一些研究,我发现bool
或boolean
标志不是这样使用的。它实际上是一个";设置为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_loss
将add_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也受支持,但不推荐使用