【问题标题】:my function returns me a function but it showing me error , No Output?我的函数返回一个函数,但它显示错误,没有输出?
【发布时间】:2019-02-05 02:50:56
【问题描述】:

我正在尝试返回一个函数,但它不起作用:

def to_power(x): # x = 3
    def calc_power(num): # num = 2
        return num**x # 2**3 = 8
    return calc_power()


cube = to_power(3)
print(cube(5))

我的代码给了我这个错误:

TypeError: calc_power() 缺少 1 个必需的位置参数:'num'

但是,我很确定我确实给出了一个论点:

cube = to_power(3)
    print(cube(5)) # arg = 5

【问题讨论】:

  • 你为什么要返回一个函数?为什么不直接在 to_power 函数中进行计算?
  • 因为我正在学习 python,我想了解当其他函数返回函数时函数是如何工作的……顺便说一句,我现在明白了……
  • 我建议在深入研究之前学习函数调用的基础知识(即签名为 def func(x):... 的函数有一个必需的位置参数)。

标签: python python-3.x


【解决方案1】:

您没有返回函数,只有返回值(由于缺少参数,它甚至永远不会计算)。去掉括号:

def to_power(x): # x = 3
    def calc_power(num):
        return num**x
    return calc_power

现在,如果您完成剩下的工作:

cube = to_power(3)
print(cube(5))

你会得到

125

【讨论】:

  • 哦,我明白了,先生,谢谢。这是个愚蠢的错误。
  • @AnkitSingh 没问题。如果这解决了您的问题,请考虑为未来的观众接受此答案。见stackoverflow.com/help/someone-answers
  • 是的,先生,为什么不,请投票给我的问题,因为我是 python 新手,这就是为什么会犯愚蠢的错误,但对于初学者来说这是一个有价值的问题,所以请先生给我的问题投票..
猜你喜欢
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 2016-12-15
  • 2020-11-01
  • 1970-01-01
相关资源
最近更新 更多