Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python int类演示int的声明和重新分配_Python_Integer_Immutability - Fatal编程技术网

用python int类演示int的声明和重新分配

用python int类演示int的声明和重新分配,python,integer,immutability,Python,Integer,Immutability,因为python中的每个对象都有以下属性 类型 价值观 标识-对象在内存中的地址 在python中执行上述代码时,将创建一个值为300的int类实例。X指向对象的标识 x = x + 233 此时将创建一个新的int类实例,其值为533,现在x指向该对象的标识 有人能用python int类解释这个工作流吗 When we execute the code x=5, We create a new int object in python. 其实不是: >>> x =

因为python中的每个对象都有以下属性

  • 类型
  • 价值观
  • 标识-对象在内存中的地址
  • 在python中执行上述代码时,将创建一个值为300的int类实例。X指向对象的标识

    x = x + 233
    
    
    此时将创建一个新的int类实例,其值为533,现在x指向该对象的标识

    有人能用python int类解释这个工作流吗

    When we execute the code x=5, We create a new int object in python. 
    
    其实不是:

    >>> x = 10
    >>> y = 10
    >>> x is y
    
    True
    >>> x = 1000
    >>> y = 1000
    >>> x is y
    
    Python有一个用于小整数的小缓存。因此,当您创建两个值小于
    256
    的变量时,您实际上引用了内存中的同一对象

    When we execute x = x + 6, x object changes.
    
    实际上,不是:)
    int
    -s在Python中是不可变的,所以您不需要更改现有对象。创建一个新对象:

    >>> id(x)
    140352270947408
    >>> x = x + 1
    >>> id(x)
    140352270947384
    

    你看过吗?从docs:
    当前的实现为-5到256之间的所有整数保留一个整数对象数组,当您在该范围内创建一个int时,实际上只返回对现有对象的引用。因此,应该可以更改1的值。我怀疑Python在本例中的行为是未定义的。:-)好。谢谢德玛斯。我想知道python的
    int
    类对上述代码没有任何作用,我已经更新了这个问题。这个答案对我帮助很大。我需要知道python是如何创建int对象的,它是如何从一个对象更改为另一个对象的(在我的例子中,是引用x)
    >>> id(x)
    140352270947408
    >>> x = x + 1
    >>> id(x)
    140352270947384