[原]04-Python3实用教程-变量

变量

python是一个弱类型语言,弱类型语言有两个特点:

  • 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
  • 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。

这是区别于强类型语言的一个重要特性,但并不意味着变量没有数据类型,只是我们在书写代码时不需要太刻意关注类型,编程语言的内部仍然是有类型的。 使用type()函数可以查看变量类型,如下:

>>> a = 10
>>> type(a)
<class 'int'>
>>> a = '11'
>>> type(a)
<class 'str'>
>>> a = 1.11
>>> type(a)
<class 'float'>

变量赋值的内部机制

name = 'tom'

对于上面的变量赋值,Python解释器干了两件事情:

  1. 在内存中创建了一个'tom'的字符串;
  2. 在内存中创建了一个名为name的变量,并把它指向'tom',即将'tom'字符串的地址赋给了name

    >>> b = 12
    >>> c = 12
    >>> id(b)
    4304948704
    >>> id(c)
    4304948704
    

对于同一个值的两个变量的指向地址是相同的,意味着内存中只创建了一份值,这是python的内存分配机制决定的,内存中每一份值带一个引用计数器,有变量引用这个值就加1,减少引用就减1,没有引用就定时销毁,避免创建大量重复的值占用内存。

分享 提问
comments powered by Disqus