【问题标题】:Why is my function returning "function ___ at 0x7f37c058d378"?为什么我的函数返回“函数 ___ at 0x7f37c058d378”?
【发布时间】:2020-02-09 19:50:05
【问题描述】:

这个函数:

hand_p = ''

def hand_player(card_variable):
    global hand_p
    hand_p = hand_p + str(card_variable)
    return hand_p

正在返回类似function hand_player at 0x7f37c058d378 的内容。

为什么会这样?

【问题讨论】:

  • 你可能只是在引用这样的函数hand_player,但你必须调用函数来获取像这样的输出hand_player()
  • 这就是 Python 表示函数对象的方式。它没有被返回;如果你看到了,你就没有调用这个函数。但如果没有minimal reproducible example,我们只能告诉你。

标签: python


【解决方案1】:

您尚未在代码中的任何位置调用该函数。如果你想传递'a' 的参数,你可以这样称呼它:

hand_p = ''

def hand_player(card_variable):
    global hand_p
    hand_p = hand_p + str(card_variable)
    return hand_p

print(hand_player('a'))

【讨论】:

    【解决方案2】:

    您已将函数分配给变量(或正在代码中的其他位置分配,因为从您发布的代码中不清楚您在哪里进行分配)该函数。这有点像 c 的函数指针。

    鉴于您发布的代码,您可能正在某处编写代码:

    variable = hand_player
    

    并且您有效地将“整个函数”存储到变量中。当然,这并不完全是发生了什么,只有指向函数代码所在的内存地址的指针存储到您的变量中。

    从技术上讲,此后,您可以通过存储变量以相同的方式调用您的函数,即

    variable(some_card)

    更多信息请参见this question

    正如techytushar 所暗示的那样,您可能试图调用该函数,对吧?在这种情况下,您需要将参数传递给它。

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 2012-09-07
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      相关资源
      最近更新 更多