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")

TA貢獻1829條經驗 獲得超6個贊
基本上你正在傳遞 options=True 這意味著“第三個”函數應該總是返回 word1 和 word2。但是 args 的 len 是一個,因此根據您的 if len(args) == 2 條件,word2 不存在。
所以“第三個”函數只返回word1。在您的“hello”函數中,您試圖通過 A, B =third(arguments) 方法將該單個元素映射到兩個變量“A”和“B”,該方法迭代函數的返回值,但它無法這樣做,因為第三是返回一個元素或一個錯誤值(因為您試圖返回不存在的 word2)。這就是發生此錯誤的原因
添加回答
舉報