我在Python 3.4中做到了这一点:
>>> type(int)
<class 'type'>
>>> int(0)
0
现在我想知道int究竟是什么。它是一种类型,还是一种功能?两者都是吗?如果两者兼而有之,那么所有类型都可以被称为函数吗?
答案 0 :(得分:8)
int
是 class 。类的类型通常是type
。
是的,几乎所有类都可以像函数一样调用。您可以创建名为实例的对象,该对象的行为与您在类中定义的行为相同。他们可以拥有自己的职能并具有特殊的属性。
(type
也是一个课程,如果您有兴趣但它是一个特殊的课程。它有点复杂但如果您要搜索,可以阅读更多内容对于元类)
答案 1 :(得分:2)
int
是内置类/类型:
>>> isinstance(int, type)
True
当您调用int('123')
时,Python发现int
本身不是函数,但后来尝试调用int.__call__('123')
;这本身就解析为type.__dict__['__call__']
;这是以(int, '123')
作为参数调用的。 __call__
的默认type
实现尝试通过在该类型类上调用int
方法来构造作为第一个参数(此处为__new__
)给出的类型的新对象;因此int('123')
的行为间接来自int.__new__(int, '123')
,它构造了一个新的int
实例,该实例具有解析为整数的给定字符串的值。
答案 2 :(得分:0)
两者都是。在Python中,类型具有相同名称的关联函数,如果可以完成,则将其参数强制转换为命名类型的对象。因此,int
<type 'int'>
类型具有函数int
。
答案 3 :(得分:0)
在像这样的Python脚本中定义整数时会发生什么?
>>> a=1
>>> a
1
执行第一行时,调用函数PyInt_FromLong
,其逻辑如下:
if integer value in range -5,256:
return the integer object pointed by the small integers array at the
offset (value + 5).
else:
if no free integer object available:
allocate new block of integer objects
set value of the next free integer object in the current block
of integers.
return integer object
如果您真的想深入了解这一点,并了解int
如何在Python中运行,请访问我提及的Python integer objects implementation来回答这个问题。
答案 4 :(得分:0)
这是一堂课。您可以使用帮助功能,它是pydocs的包装。
help(int)
有关模块内置模块中的类int的帮助:
class int(object)
| int(x=0) -> integer
| int(x, base=10) -> integer
|
| Convert a number or string to an integer, or return 0 if no arguments
| are given. If x is a number, return x.__int__(). For floating point
| numbers, this truncates towards zero.
答案 5 :(得分:-2)
这是一个类,即很明显的类型。
但是如果你对它像函数一样的用法感到困惑,我在这里有答案。
这是因为,在 Python 的早期版本中,当它被引入时,int() 是一个函数。它可能返回了一个整数(在我看来)。但是后来int()函数就不再开发了