Python快速入门 | 为什么说 Python 中的变量叫“名称”,赋值叫“贴标签”

在 Python 语言里面,我们如果要声明一个数据,是这样的

name = 对象

比如我们要声明一个整数:

a = 1

在编程语言中,我们都习惯把被赋值的玩意就做变量,在 Java 编程语言中,如果我们要声明一个整数就是这样的:

int a = 1;

而在 Python 中不需要对变量指定数据类型,这是因为

本文隐藏内容 登陆 后才可以浏览

22 Replies to “Python快速入门 | 为什么说 Python 中的变量叫“名称”,赋值叫“贴标签””

  1. kelvinweng说道:

    我试出来是257开始id会有区别,这个应该与内存的存储单位有关,可是257既不是8位的极限值,又不是16位的极限值,为何呢?

    1. 小帅b说道:

      b 不会改变,你改变 a 就时把 a 这个标签贴到了别的地方,b 还是原来那样的。

  2. sunshine说道:

    sunshine@sunshine-Lenovo:~$ python
    Python 2.7.17rc1 (default, Oct 10 2019, 10:26:01)
    [GCC 9.2.1 20191008] on linux2
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> a=1
    >>> b=1
    >>> id(1)
    94076597943512
    >>> id(a)
    94076597943512
    >>> id(b)
    94076597943512
    >>>
    [2]+ 已停止 python
    sunshine@sunshine-Lenovo:~$ python3
    Python 3.7.5 (default, Nov 20 2019, 09:21:52)
    [GCC 9.2.1 20191008] on linux
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> a=1
    >>> b=1
    >>> id(a)
    9302176
    >>> id(1)
    9302176
    >>> id(b)
    9302176
    >>>

    大帅,为什么两个版本输出的结果都不相同呢?还有,和你的也有不同,这是什么状况?

    1. 小帅b说道:

      不是版本的问题,就算你重新进入你刚刚的版本再执行 id(1) 得到的也不一样,这是因为每次都会给对象重新分配空间,生成新的地址。

  3. Python自动将-5~256的整数进行了缓存,当将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

  4. xdall说道:

    在二的十次方里面的整形数据使用会指向同一个地址 而之外的会自行开辟另外一个空间 貌似是这样子的

  5. slient说道:

    python版本不同共享内存池的大小不同,当超过共享内存池的最大值就会重新分配内存创建对象。list和字典貌似不存在共享内存池,不知道set是不是也不存在

    1. Hans·Rain说道:

      在控制台和pycharm中结果也不一样

  6. Hua Don说道:

    记得好像是因为用二进制来储存,而Python中是有个默认的位数限制,所以就造成了这两个520 实际上后面的位数是不一样的,所以实际上不是一个数。 随便说说,估计不对…

    1. 小帅b说道:

      是这样的, Python 内部有个优化机制,也就是说整数类型会在 -5 到 256 之间有一个缓存,所以当我们的变量指向这个缓存的时候,得到的引用都是相同的,不会再给我们开辟一个新的空间了,从而提高了 Python 的效率!

回复 shuqing 取消回复