在Python中,符号int
既用作类型,也用作内置函数。但是当我在REPL中使用int
或请求它的类型时,REPL告诉我它是一种类型。
>>> int
<type 'int'>
>>> type(int)
<type 'type'>
这很好,但是int
也是一个内置函数:它列在内置函数就在Python文档中的表中。
其他内置函数在REPL中报告如下:
>>> abs
<built-in function abs>
>>> type(abs)
<type 'builtin_function_or_method'>
但我不能让type
给我看这个给int
看。显然,如果我想使用int
作为函数(抱歉使用map
而不是理解,我只是想说明一点):
>>> map(int, ["4", "2"])
[4, 2]
因此Python知道如何使用该函数。但是为什么type
要选择类型而不是函数呢?函数中没有任何东西能让人期待这一点。然后作为后续,这个表达的意义是什么:
id(int)
这是给我类型或函数的id
。我想是前者。如果是前者,我如何获得内置函数int
的id?
发布于 2014-06-22 18:35:39
只有一个东西叫做int
,只有一个东西叫做abs
。
区别在于int
是一个类,abs
是一个函数。然而,两者都是可以调用的。调用int(42)
时,调用int
类的构造函数,返回类int
的实例。
这和以下几点并没有什么不同:
class Int(object):
def __init__(self, init_val=0):
self.val = init_val
obj = Int(42)
print Int, type(Int), obj, type(obj)
在这里,Int
是可调用的,可以用来构造类的实例。
一旦你意识到这一点,其他人就会跟进。
https://stackoverflow.com/questions/24354395
复制相似问题