- 此问题在此处已有答案**:
In Python, what does '<function at ...>' mean?(4个答案)
2天前关闭。
我试着在谷歌上搜索,但没有找到一个明确的答案:
为什么,当你运行下面的代码:
n = "Hello"
# Your function here!
def string_function(n):
return (n) + 'world'
print string_function
您将得到以下响应:
<function string_function at 0x7f5111010938>
None
我当然知道这个函数没有参数,但是这个响应具体是什么呢?这个字母和数字的字符串("0x7f5111010938")是什么意思?
感谢您的任何信息!
4条答案
按热度按时间ogq8wdun1#
输出是函数对象本身。单词
function
是您打印的函数对象的type
。部分string_function
是对象的名称。数字是函数对象在内存中的地址。Python中的“一切”都是一级对象,包括函数和类,函数甚至有自己的
function
类型(您可以通过执行type(myfunction)
来发现)-就像100
是int
,'Hello World'
是str
,True
是bool
一样,或者myfancyobject
是MyFancyClass
示例。例如,您可以将函数(甚至是类本身,其类型为
type
)传递到其他函数中:这显然是一个相当做作的例子,但是能够以这种方式传递函数是非常有用的。装饰器是一个很好的例子,说明了你可以用这种能力做一些有用的事情。谷歌一下“python装饰器”,找到关于它们的更多信息。
你可以对对象做的另一件事是给予它们属性!你甚至可以这样做:
你可以对一个对象做的任何事情,你都可以对一个函数做(包括
print
,就像你的例子一样);它们是对象。tkqqtvp12#
你得到的都是函数对象。它可以在程序中的任何地方使用。列表是函数在内存中的地址。因此
f
现在可以用作函数变量,也可以用作f('hi')
t5zmwmid3#
Python用唯一的id保存所有对象。它是函数的内存地址,每个对象实际上是一个类,你可以用它来检查;
或;
正如您所看到的
class
,显然,如果您使用此函数调用您的函数print(string_function())
,您将看到一个错误,因为函数中缺少参数5vf7fwbs4#
当你执行
print string_function
时,你实际上并没有调用函数,这个命令只是打印函数对象本身的表示,这是执行print repr(string_function)
的捷径;在解释器中,简单地执行string_function
将打印相同的内容。表示中的
0x7f5111010938
是函数对象的id;这个数字在每次运行脚本时都会改变,在标准Python(aka CPython)中,id是对象的内存地址,但这只是CPython的实现细节,在其他风格的Python中不一定如此,也请参见https://docs.python.org/2/reference/datamodel.html...
不过,我不明白为什么在最后打印
None
。