Python打印函数在解释器处获得意外输出?

Python打印函数在解释器处获得意外输出?,python,Python,我在一个名为seta.py的文件中有以下内容: def print_name(): print "hello" 我正在口译员处做以下工作: import seta 然后 seta.print_name 我希望输出为“hello”,但如下所示: <function print_name at 0x7faffa1585f0> 我做错了什么?要调用函数,需要添加(): 否则它将打印该函数对象的str/repr版本 演示: def func(): print "Hell

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

def print_name():
    print "hello"
我正在口译员处做以下工作:

import seta
然后

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

<function print_name at 0x7faffa1585f0>
我做错了什么?

要调用函数,需要添加
()

否则它将打印该函数对象的
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!
def func():
打印“你好,世界!”
>>>func#返回函数对象的repr版本
>>>报告员(职能)
''
>>>print func#相当于` print str(func)`
>>>func()#尤里卡!
你好,世界!

如果在解释器中定义一个函数,然后打印不带参数的函数名,则会得到函数对象的
\uuuuuu repr\uuu
(表示),因为在Python中,函数是对象。这就是你得到的,但这里有一个演示

>>> def foo():
...     return 1
... 
>>> print foo
<function foo at 0x1005fa398>
>>def foo():
...     返回1
... 
>>>印刷食品
括号调用函数。调用的计算结果为函数返回的结果。因此,当您键入
foo()
时,它会变成
1
。但是没有括号,你只是在谈论函数本身,而不是函数的调用。你期待着打电话的结果


正如其他人所指出的,你的意思是键入
seta.print_name()

有人想说他们为什么反对投票吗?事后看来,这个问题显然很简单,但这样的否决票让人们不敢问问题。如果你对这门语言完全陌生,很难找出问题所在,因为你不知道在网上搜索什么才能找出问题所在。换句话说,你不会说知道该问什么所必需的语言。OP给出了他的代码,他是如何使用它的,以及预期的输出,这正是我们对其他人的要求。实际上,我认为否决这一点是公平的。调用函数是基本的东西,可以通过教程或语言标准合理地回答。@Marcin如果你不知道调用函数意味着什么呢?在开始函数定义之前,您必须从头开始,在算术、打印语句、类型和数据结构中艰难跋涉,直到您了解到这一点并阅读相关内容——但在找到它之前,您不知道自己在寻找什么。你甚至可能会错过它,因为你没有意识到自己做错了什么,而且你把
def
中的参数与调用的参数混在了一起,你不会意识到区别。或者您可能混淆了属性语法。@2rs2ts显然OP不知道函数调用是什么,他们正在尝试。两个小缺点:显示
func.\uuuu repr\uuu()
,可能更清晰,因为这是键入
seta.print\u name
得到的结果,而不是
\uu str\uu
。使用
repr(func)
而不是
func.\uu repr\uuu()
(因此您不需要了解dunder方法)可能更简单。但除此之外,这是一个很好的解释。
>>> def foo():
...     return 1
... 
>>> print foo
<function foo at 0x1005fa398>