Python:是' int'一种类型或功能?

时间:2016-09-18 19:58:04

标签: python

我在Python 3.4中做到了这一点:

>>> type(int)
<class 'type'>
>>> int(0)
0

现在我想知道int究竟是什么。它是一种类型,还是一种功能?两者都是吗?如果两者兼而有之,那么所有类型都可以被称为函数吗?

6 个答案:

答案 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()函数就不再开发了