首页 > 解决方案 > python接受单个参数输入,可以是两种不同的类型

问题描述

我处于接受用户输入的情况,它可以是TrueorFalsestring.

我知道我可以将输入作为字符串然后将boolean其解析为是否为trueor false,但是有没有更好的方法将输入解析为stringor boolean

parser.add_argument('--s', type=int, default=False)

谢谢你。

标签: python

解决方案


从技术上讲,你可以很容易地做到这一点。

value = arg == "true" if arg in ("true", "false") else arg

假设您想在任意情况下接受真/假,它只会稍微复杂一点:

value = arg.lower() == "true" if arg.lower() in ("true", "false") else arg

这可能会运行lower()两次,所以如果这是一个问题,您可以先缓存该值。尽管在参数解析器中我怀疑它会是。

不过,实际上,我认为您更有可能应该接受两种不同的论点。像这样混合类型是一个不好的迹象,并且更难得到易于阅读、可调试的代码。


推荐阅读