我希望下面的代码返回一个数值,而不是<function exp at 0x101c22e18>
:
def exp(x,y):
x**y
print(f"exp of {x} to the {y}")
return exp
test1 = 2
test2 = 2
testing = exp(test1, test2)
print(testing)
为什么我的print
语句没有返回4
?
答案 0 :(得分:0)
正如Argyll指出的那样,问题在于函数定义。而不是:
def exp(x,y):
x**y
print(f"exp of {x} to the {y}")
return exp
你应该写:
def exp(x,y):
result = str(x**y)
return print(f"{result} is the value of {str(x)} to the {str(y)}")
在你的版本中,你刚刚返回了函数本身(这就是你得到的:函数对象)。在我的版本中,您将返回该函数的结果。你不希望函数返回,你想要函数做什么。你想把它作为一个字符串,这就是为什么我使用str()函数:将整数和/或浮点数转换为它们的字符串等价物。
是的,你可以从函数中返回一个函数 - 这是一个像任何其他函数一样的“对象” - 这个功能有很多用途。但是,在你的情况下,你想要x ** y的结果,而不是函数本身。
请注意,您使用的“f”格式仅适用于Python 3.6或更高版本。
答案 1 :(得分:-1)
如果您打算输出x ^ y的值。你需要写
return x**y
不返回函数句柄exp()