我在名为seta.py的文件中有以下内容:
def print_name():
print "hello"
我正在从口译员那里做以下事情:
import seta
然后
seta.print_name
我希望输出为"你好"但它如下:
<function print_name at 0x7faffa1585f0>
我做错了什么?
答案 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()
。