为了账号安全,请及时绑定邮箱和手机立即绑定

python 3 typeError:'NoneType'对象不可迭代

python 3 typeError:'NoneType'对象不可迭代

慕码人8056858 2021-09-28 17:45:34
我写了下面的代码来找到*args的继承。但我有一个错误。我真的不明白这个错误,因为我有输入,但他们不是没有。def third(*args, option=True):    if len(args) == 2:        word1, word2 = args    else:        word1 = args[0]    if option:        return word1, word2    else:        return word1def hello(data, *args, option=True):    print("the data is:", data)    A, B = third(*args, option=True)    print("the args are:", A, B)def world(small, *args, option=True):    return hello(small, *args)if __name__ == "main":    world("data","prediction")输出:the data is: dataTraceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 2, in worldFile "<stdin>", line 3, in helloTypeError: 'NoneType' object is not iterable
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

试试这个,应该工作:


def third(*args):

    if len(args) == 2:

        word1, word2 = args

        option = True

    else:

        option = False

        word1 = args[0]


    if option:

        return word1, word2

    else:

        return word1, None



def hello(data, *args):

    print("the data is:", data)

    A, B = third(*args)

    print("the args are:", A, B)


def world(small, *args):

    return hello(small, *args)



if __name__ == "__main__":

    world("data","prediction")


查看完整回答
反对 回复 2021-09-28
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

基本上你正在传递 options=True 这意味着“第三个”函数应该总是返回 word1 和 word2。但是 args 的 len 是一个,因此根据您的 if len(args) == 2 条件,word2 不存在。

所以“第三个”函数只返回word1。在您的“hello”函数中,您试图通过 A, B =third(arguments) 方法将该单个元素映射到两个变量“A”和“B”,该方法迭代函数的返回值,但它无法这样做,因为第三是返回一个元素或一个错误值(因为您试图返回不存在的 word2)。这就是发生此错误的原因


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信