我正在为一个变量分配一个函数,如下所示:
def hello(name):
print "Hello %r \n" % name
king = hello
print "%r, King of Geeks" % king("Arthur")
在终端中它返回:
你好'亚瑟' 没有,极客之王
是什么给出了?
答案 0 :(得分:8)
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"))
答案 1 :(得分:1)
您的hello
函数是print
它创建的字符串,而不是返回它。
然后尝试将返回值替换为将函数调用到另一个字符串中。
由于您的hello
函数未返回任何内容,因此它会有效地返回None
,因此可以替换为什么。只需将print
更改为return
内部您的hello
功能和事情将按预期工作。
答案 2 :(得分:0)
您正在打算king("Arthur")
的{em>结果,None
,因为它没有返回值。
答案 3 :(得分:0)
这也有效
def hello(name):
print("hello, %s" % name)
king = hello
king("arthur")
输出
hello, arthur