我正在将一个函数分配给一个变量,如下所示:
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