如何在Python argparse帮助信息中以十六进制显示默认整数?
解决方案
要让argparse帮助信息里的默认值以0x{:04X}格式显示,直接在help参数中手动格式化默认值即可,无需修改参数的类型或默认值本身(默认值仍保持整数类型用于程序逻辑)。
修改后的代码
import argparse def parse_args(args): parser = argparse.ArgumentParser(description="Hello hex") # 定义默认值变量,方便统一维护和格式化 DEFAULT_HEX = 12342 # 使用f-string格式化默认值为指定的十六进制格式 parser.add_argument( '--my_hex', type=lambda x: int(x, 0), # 支持解析十进制、十六进制(带0x)、八进制输入 default=DEFAULT_HEX, help=f"set a hex number (default: 0x{DEFAULT_HEX:04X})" ) return parser.parse_args(args) def main(inargs): args = parse_args(inargs) if __name__ == "__main__": import sys main(sys.argv[1:])
效果验证
执行python3 my_hex_script.py --help后,输出会变成:
usage: my_hex_script.py [-h] [--my_hex MY_HEX]
Hello hex
options:
-h, --help show this help message and exit
--my_hex MY_HEX set a hex number (default: 0x3036)
说明
- 保留
type=lambda x: int(x,0)可以让参数支持多种进制输入(比如输入0x123会被解析为十进制291)。 - 把默认值定义为变量
DEFAULT_HEX,方便后续修改默认值时,只需要改一处就能同步更新帮助信息里的显示内容。
内容的提问来源于stack exchange,提问作者sdbbs
相关产品推荐
相关产品推荐

