贝尔0703 发表于 2026-9-26 16:21:54

怎么可能错?

def times(s:list, n:int = 3) -> list:
        return s * n
print(times())



PYTHON说我错了,我到现在都不知道我错在那儿

FishC 发表于 2026-9-26 16:22:03

times() 调用时没有传入 s,而 s 在函数定义里没有默认值,所以 Python 会报错:缺少必需的位置参数 s。

函数定义:

def times(s: list, n: int = 3) -> list:
    return s * n


这里 s 是必需参数,n 有默认值 3。调用 times() 相当于只给了 n 默认值,但 s 没给,所以报错。

正确调用应该传入 s,例如:

print(times())

这样会输出 。

类型注解 s: list 只是提示,并不会让参数变成可选。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

贝尔0703 发表于 2026-9-26 16:23:36

但小甲鱼的屏幕里是这样的呀

FishC 发表于 2026-9-26 16:23:43

贝尔0703 发表于 2026-09-26 16:23
但小甲鱼的屏幕里是这样的呀

小甲鱼屏幕里如果真是 print(times()),那前面的函数定义一定不是你现在写的这个。你可以暂停视频,逐字对一下。

常见情况有两种:

1. 调用时其实传了参数:

print(times())

这样才会正常输出 。

2. 函数定义里 s 有默认值:

def times(s: list = [], n: int = 3) -> list:
    return s * n

这时 times() 才不会报错。

你现在写的 s: list 只是类型提示,不是默认值。类型提示写成 s: list 和 s,在“有没有默认值”这件事上完全一样。

所以关键看两点:小甲鱼调用 times() 时括号里有没有东西?函数定义里 s 后面有没有写 = 默认值?如果都没有,那 Python 报错就是对的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小甲鱼 发表于 2026-9-27 01:32:36

贝尔0703 发表于 2026-9-26 16:23
但小甲鱼的屏幕里是这样的呀

{:5_94:}

贝尔0703 发表于 2026-9-27 12:47:04

小甲鱼 发表于 2026-9-27 01:32


不是,你怎么了?
页: [1]
查看完整版本: 怎么可能错?