Python函数返回函数对象而非数值,为何print无法输出4?
问题分析与修正方案
嘿,你的代码问题主要出在返回值的错误设置和计算结果未被正确返回这两点上,咱们一步步拆解:
问题点详解
- 你在函数里写了
x**y,这确实计算了x的y次方,但这个结果没有被保存或者直接返回,相当于做了无用功; - 函数最后一行
return exp是把函数本身返回给调用者了,而不是你想要的计算数值,所以testing变量存的是<function exp at ...>这个函数对象,不是4; - 虽然函数里的
print(f"exp of {x} to the {y}")会输出文字,但这和返回值没关系,不影响testing的内容。
修正后的代码
直接调整返回值,把计算结果返回就搞定了:
def exp(x,y): # 先计算结果,或者直接返回x**y也行 power_result = x ** y print(f"exp of {x} to the {y}") return power_result # 返回计算出的数值,不是函数本身 test1 = 2 test2 = 2 testing = exp(test1, test2) print(testing) # 现在会输出4啦
如果想更简洁,也可以不用中间变量,直接返回计算式:
def exp(x,y): print(f"exp of {x} to the {y}") return x ** y
这样调用后,testing就会拿到2**2的结果4,执行print(testing)自然就输出4了。
内容的提问来源于stack exchange,提问作者dre
相关产品推荐
相关产品推荐

