Python函数返回"函数在"而不是数值

时间:2018-04-01 19:35:50

标签: python-3.x function

我希望下面的代码返回一个数值,而不是<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

2 个答案:

答案 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()