Python absl模块flags.DEFINE_boolean函数使用疑问
absl flags.DEFINE_boolean 使用问题解答
问题原因
absl的flags.DEFINE_boolean是开关型参数,不支持通过--flag True/False的方式传递值,它的触发逻辑是通过--flag(开启)或--noflag(关闭)来切换状态,这是你遇到问题的核心原因:
- 当默认值为
True时,你用--is_student False不会生效,因为False会被识别为无关的位置参数,原参数保持默认的True - 当默认值为
False时,只要命令行出现--is_student,就会触发参数变为True,这是该类型参数的正常行为
正确用法
默认值为
True时,要改为False:
运行命令:python test.py --nois_student默认值设为
False(完全支持):
修改代码如下:from absl import app, flags mmap = flags.FLAGS flags.DEFINE_boolean( name='is_student', default=False, help='Are you a student?', ) def func(_): print(mmap.is_student) if __name__ == '__main__': app.run(func)对应的命令行测试:
- 直接运行
python test.py→ 输出False(使用默认值) - 运行
python test.py --is_student→ 输出True(开启参数) - 运行
python test.py --nois_student→ 输出False(显式关闭参数)
- 直接运行
结论
完全可以将flags.DEFINE_boolean的默认值设为False,只需遵循absl开关型布尔参数的调用规则,不要尝试通过传递True/False字符串来修改参数状态。
内容的提问来源于stack exchange,提问作者WeiJie Liu
相关产品推荐
相关产品推荐

