3

我在名为 seta.py 的文件中有以下内容:

def print_name():
    print "hello"

我正在通过口译员执行以下操作:

import seta

接着

seta.print_name

我希望输出为“hello”,但如下所示:

<function print_name at 0x7faffa1585f0>

我究竟做错了什么?

4

2 回答 2

7

要调用一个函数,您需要添加()

seta.print_name()

否则它将打印该函数对象的str/repr版本。

演示:

def func():
    print "Hello, World!"
>>> func                         #Returns the repr version of function object
<function func at 0xb743cb54>
>>> repr(func)
'<function func at 0xb743cb54>'
>>> print func                   #Equivalent to `print str(func)`
<function func at 0xb743cb54>

>>> func()                       #Eureka!
Hello, World!
于 2013-07-09T21:48:18.433 回答
3

如果您在解释器中定义一个函数,然后打印不带括号的函数名称,您将获得函数对象__repr__的(表示),因为在 Python 中,函数是对象。这就是你得到的,但这里有一个演示。

>>> def foo():
...     return 1
... 
>>> print foo
<function foo at 0x1005fa398>

括号调用函数。调用计算函数的返回结果。因此,当您键入时foo(),它会变成1. 但是如果没有括号,你只是在谈论函数本身,而不是它的调用。您期望调用它的结果。

正如其他人会指出的那样,您的意思是输入seta.print_name().

于 2013-07-09T21:52:22.210 回答