1

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

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

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

在终端中它返回:

你好'亚瑟'
无,极客之王

是什么赋予了?

4

4 回答 4

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"))
于 2013-01-08T05:19:25.543 回答
1

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

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

因为您的hello函数不返回任何内容,所以它实际上返回None,因此为什么要替换它。只需将 a 更改printreturn您的hello函数内部,事情就会按预期工作。

于 2013-01-08T05:21:47.647 回答
0

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

于 2013-01-08T05:22:33.740 回答
0

这也有效

def hello(name):
  print("hello, %s" % name)

king = hello
king("arthur")

输出

hello, arthur
于 2013-01-08T05:24:13.353 回答