You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中如何传递argv参数?《笨办法学Python》习题13报错求助

在Jupyter Notebook中实现sys.argv参数传递的几种方法

嘿,我完全懂你碰到的问题——在Jupyter Notebook里直接运行《笨办法学Python》习题13的代码,会因为sys.argv没有被填充足够参数而报错,毕竟Notebook的运行环境和终端里直接跑脚本不一样嘛。下面给你几个实用的解决办法:

方法1:手动修改sys.argv列表

sys.argv本质上就是一个普通的Python列表,我们可以直接给它赋值,模拟终端传入的参数。修改后的代码如下:

from sys import argv
# 手动模拟终端传参:第一个元素是脚本名(随便填就行,Notebook里没有实际脚本文件),后面是参数
argv = ['ex13.py', 'first', '2nd', '3rd']
script, first, second, third = argv
print("The script is called:", script)
print("Your first variable is:", first)
print("Your second variable is:", second)
print("Your third variable is:", third)

这样运行后就能得到和终端传参一样的输出,完美适配习题里的代码逻辑。

方法2:用Jupyter魔法命令%run传参

如果你的习题代码是保存在单独的.py文件(比如ex13.py)里,那可以在Notebook的单元格里用%run魔法命令来运行它,同时传递参数,效果和终端里的命令完全一致:

%run ex13.py first 2nd 3rd

执行这个单元格后,sys.argv就会被正确填充,代码就能正常运行了。

方法3:使用argparse模块(进阶方案)

如果之后你需要处理更复杂的参数逻辑,argparse模块会比直接用sys.argv更灵活,而且在Notebook里也能很好工作。修改代码如下:

import argparse

# 创建参数解析器
parser = argparse.ArgumentParser()
# 添加三个位置参数
parser.add_argument('first')
parser.add_argument('second')
parser.add_argument('third')
# 手动传入参数列表模拟终端输入
args = parser.parse_args(['first', '2nd', '3rd'])

print("Your first variable is:", args.first)
print("Your second variable is:", args.second)
print("Your third variable is:", args.third)

这种方式更规范,也更容易扩展到多参数、可选参数的场景。


内容的提问来源于stack exchange,提问作者user9061464

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:06