我正在将一个函数分配给一个变量,如下所示:
def hello(name):
    print "Hello %r \n" % name
king = hello
print "%r, King of Geeks" % king("Arthur")
在终端中它返回:
你好'亚瑟'
无,极客之王
是什么赋予了?
我正在将一个函数分配给一个变量,如下所示:
def hello(name):
    print "Hello %r \n" % name
king = hello
print "%r, King of Geeks" % king("Arthur")
在终端中它返回:
你好'亚瑟'
无,极客之王
是什么赋予了?
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"))
您的hello函数正在print创建它创建的字符串,而不是返回它。
然后,您尝试将调用函数的返回值替换为另一个字符串。
因为您的hello函数不返回任何内容,所以它实际上返回None,因此为什么要替换它。只需将 a 更改print为return您的hello函数内部,事情就会按预期工作。
您正在打印调用的结果king("Arthur"),None因为它不返回值。
这也有效
def hello(name):
  print("hello, %s" % name)
king = hello
king("arthur")
输出
hello, arthur