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

Python导入自定义子函数触发IndexError索引越界问题咨询

报错根因

你遇到的IndexError: list index out of range和函数导入是否正确无关,问题出在file_with_function.py的代码结构错误:

  • 读取sys.argv的代码放在了模块顶层,没有缩进进if __name__ == '__main__'判断块内
  • 执行from file_with_function import function时,Python会优先运行被导入文件的所有顶层代码,此时你运行主脚本没有传入额外命令行参数,sys.argv仅包含1个元素(当前脚本路径),调用sys.argv[1]自然触发索引越界
  • 你写的if __name__ == '__main__'块缩进错误,目前被包含在function函数定义内部,直接运行该文件时也不会正常触发
代码修复方案

首先修正file_with_function.py的代码结构:

import sys

def function(roll = 15 , pitch = 30 , yaw = 45):
    # 此处编写函数逻辑
    return output1, output2, output3 # 多返回值需要显式return

if __name__ =='__main__':
    # 仅直接运行该文件时才会执行以下命令行参数读取逻辑
    print('Argument List: '+ str(sys.argv))
    rolla = int(sys.argv[1])
    pitcha = int(sys.argv[2])
    yawa = int(sys.argv[3])
    function(roll = rolla, pitch = pitcha, yaw = yawa)

其次修正主脚本的调用语法,Python多返回值赋值无需加方括号:

from file_with_function import function

output1, output2, output3 = function(roll = 15, pitch = 30, yaw = 45)
函数导入校验方法

如果需要确认函数是否被正确导入,可使用以下方式验证:

  • 导入后直接打印函数对象:print(function),输出为<function function at 内存地址>格式则导入成功,报NameError则导入失败
  • 打印函数参数列表验证:导入inspect模块后执行print(inspect.signature(function)),输出参数和你定义的一致则没问题
  • 调用默认参数版本测试:执行res = function(),无报错且返回值符合预期则导入正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:30:06