Jupyter Notebook中argparse模块的正确使用方法及常见问题解答
可以在Jupyter Notebook中使用argparse模块,报错原因如下
argparse默认的parse_args()方法会读取系统命令行参数,而Jupyter Notebook内核启动时自带了若干内置参数,不存在你代码中定义的--x、--y参数,因此会抛出参数未识别的报错。
两种常用正确使用方式
方法1:用parse_known_args忽略多余参数
该方法会仅解析你显式定义的参数,Jupyter自带的多余参数会被自动忽略,适合调试原本用于命令行执行的Python脚本,改动量极小:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--x', type=int, required=True) parser.add_argument('--y', type=int, required=True) # 第一个返回值是你定义的参数解析结果,第二个返回值是未识别的多余参数可直接丢弃 args, _ = parser.parse_known_args() # 手动给参数赋值即可 args.x = 10 args.y = 20 product = args.x * args.y print('Product:', product)
方法2:直接向parse_args传入自定义参数列表
直接将需要的参数以列表形式传入parse_args,完全绕开系统命令行参数,参数定义更直观,适合在Notebook中直接用argparse管理参数的场景:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--x', type=int, required=True) parser.add_argument('--y', type=int, required=True) # 直接传入自定义参数,和命令行传参的格式一一对应 args = parser.parse_args(args=['--x', '10', '--y', '20']) product = args.x * args.y print('Product:', product)
两种方案选型建议
- 若你是将命令行脚本搬到Notebook临时调试,优先选方法1,调试完成后改回命令行运行时不需要修改代码
- 若你需要在Notebook中长期用argparse管理参数,优先选方法2,参数值直接在代码中定义,可读性更强
内容的提问来源于stack exchange,提问作者user785099
相关产品推荐
相关产品推荐

