Python代码输出异常:为何返回16而非(16, 2)?
问题分析与解决
你的代码之所以只输出16而非预期的(16, 2),核心原因是sq函数只返回了func(y)的计算结果,完全没有把参数x的值包含在返回内容里。
看原代码里的sq函数:
def sq(func,x): y = x**2 return func(y) # 这里只返回了f(y)=f(4)=16,x的值根本没被返回
要得到(16, 2)的结果,只需要修改sq函数的返回语句,把func(y)和x打包成元组返回即可:
def sq(func,x): y = x**2 return func(y), x # 返回包含两个结果的元组 def f(x): return x**2 Calc = sq(f,2) print(Calc) # 此时输出 (16, 2)
在Python中,用逗号分隔多个返回值时,解释器会自动将它们封装成元组,这样Calc就会接收这个元组,打印时自然会输出(16, 2)。
内容的提问来源于stack exchange,提问作者Xyox
相关产品推荐
相关产品推荐

