Python打印功能在解释器上获得意外输出?

时间:2013-07-09 21:47:35

标签: python

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

def print_name():
    print "hello"

我正在从口译员那里做以下事情:

import seta

然后

seta.print_name

我希望输出为"你好"但它如下:

<function print_name at 0x7faffa1585f0>

我做错了什么?

2 个答案:

答案 0 :(得分: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!

答案 1 :(得分:3)

如果在解释器中定义一个函数,然后在没有parens的情况下打印函数的名称,则会获得函数 object __repr__(表示),因为在Python,函数是对象。这就是你得到的,但这是一个演示。

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

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

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