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

如何将Python自定义函数脚本导入另一文件并正确调用测试

Python作业问题修正方案

现有代码错误汇总

  • 函数参数不符合要求:find要求传入key和列表两个参数,你只定义了一个参数;abs要求传入单个数字,你定义的是接收列表,参数数量类型都不对。
  • 递归死循环:自定义的min/max/sum函数和Python内置函数重名,函数内部直接调用自身名称的函数会触发无限递归,程序直接崩溃。
  • 缩进错误:avg函数的定义、内部循环的缩进完全不符合Python规范,会直接报语法错误。
  • 逻辑错误:avg函数内sum += aList是把整个列表和数值相加,应该取列表的当前元素aList[i];sum函数写了死循环加自调用,完全无法运行。
  • 冗余代码:myFunctions.py中生成随机列表的代码写在全局作用域,导入文件时会自动执行,这部分代码应该放到测试文件中。

修正后的myFunctions.py代码

# 严格按照作业要求的函数名和参数定义
def min(lst):
    # 调用内置min要指定__builtins__避免和自定义函数重名
    return __builtins__.min(lst)

def max(lst):
    return __builtins__.max(lst)

def avg(lst):
    total = 0
    for num in lst:
        total += num
    return total / len(lst)

def sum(lst):
    total = 0
    for num in lst:
        total += num
    return total

def abs(num):
    if num >= 0:
        return num
    else:
        return -num

def find(key, lst):
    return key in lst

def isEven(number):
    return number % 2 == 0

修正后的testFunctions.py代码

# 导入整个自定义模块
import myFunctions
# 也可以单独导入需要的函数:from myFunctions import min, max, avg, sum, abs, find, isEven
from random import randint

# 生成测试用的随机列表
x = randint(5,10)
test_list = []
for i in range(x):
    number = randint(1,7)
    test_list.append(number)
print("生成的测试列表:", test_list)

# 逐个测试所有函数
print("列表最小值:", myFunctions.min(test_list))
print("列表最大值:", myFunctions.max(test_list))
print("列表总和:", myFunctions.sum(test_list))
print("列表平均值:", myFunctions.avg(test_list))

test_num = randint(-10, 10)
print(f"测试数字{test_num}的绝对值:", myFunctions.abs(test_num))

search_key = randint(1,7)
print(f"查找值{search_key}是否在列表中:", myFunctions.find(search_key, test_list))

even_test_num = randint(1,20)
print(f"测试数字{even_test_num}是否为偶数:", myFunctions.isEven(even_test_num))

调用说明

  • 导入模块后,用模块名.函数名(参数)的格式调用即可,传入的参数数量、类型要和函数定义完全匹配,比如find函数必须先传要查找的key,再传目标列表。
  • 如果不想每次调用都写模块名,可以用from myFunctions import *导入所有函数,直接写函数名加参数调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:03