【问题标题】:How to assign a function to a variable then call with parameters in python [duplicate]如何将函数分配给变量然后在python中使用参数调用[重复]
【发布时间】:2012-12-21 22:19:55
【问题描述】:

我正在将一个函数分配给一个变量,如下所示:

def hello(name):
    print "Hello %r \n" % name

king = hello
print "%r, King of Geeks" % king("Arthur")

在终端返回:

你好'亚瑟'
没有,极客之王

什么给了?

【问题讨论】:

  • 由于您没有return 语句,因此该方法返回None,这就是您所看到的打印内容。
  • 您可能不想使用%r,因为它返回对象的repr,可能不是您期望的字符串。尝试用%s 替换它(在实施以下建议后)。

标签: python


【解决方案1】:

hello() 正在打印某些内容,但返回 None。 (所有函数默认返回None,除非你明确地return 某事)

>>> result = hello('test')
Hello 'test' 

>>> print result
None

如果你让hello() 返回文本,而不是打印它,你会得到预期的结果:

def hello(name):
    return "Hello %r \n" % name

king = hello
print "%r, King of Geeks" % king("Arthur")

“你好'亚瑟'\n”,极客之王

我建议也使用New String Formatting 而不是%

print "{}, King of Geeks".format(king("Arthur"))

【讨论】:

  • 谢谢,这让我明白了!
【解决方案2】:

您的 hello 函数是 printing 它创建的字符串,而不是返回它。

然后您尝试将调用函数的返回值替换为另一个字符串。

因为您的 hello 函数没有返回任何内容,它实际上返回了 None,因此它被替换了。只需将 print 更改为 return 在您的 hello 函数中,事情就会按预期工作。

【讨论】:

    【解决方案3】:

    您正在打印对king("Arthur") 的调用的结果,即None,因为它不返回值。

    【讨论】:

      【解决方案4】:

      这也有效

      def hello(name):
        print("hello, %s" % name)
      
      king = hello
      king("arthur")
      

      输出

      hello, arthur
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        相关资源
        最近更新 更多