简述
变量只不过是保留的内存位置,用于存储规定范围内的值。这意味着,在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,例如:整数、小数或字符串等。
- 简述
- 何为变量
- 变量命名
- 变量赋值
- 变量的基本赋值
- 变量的重新赋值
- 为多个变量指定同一个值
- 将多个值分配给多个变量
版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820
何为变量?
简单地说,变量就是给数据起一个名字。。。
托马斯·卡莱尔的经典语录中有这么一句话:生命不止,奋斗不息。
Cease to the struggle and cease to the life
--
thomas carlyle
激励了无数人,多么唯美励志。。。值得铭记一生!
青春我有,加油(^ω^),永远 18 岁。。。如果用 Python 表达的话,就是如下等式,一个名为 age 的变量被赋值为 18 。正如每个人都有姓名一样,变量的名字叫做标识符。
注意: 在很多语言中,声明变量必须要声明变量的类型。例如,要在 C++ 中声明一个整形变量,必须先声明变量的类型为 int,然后使用变量名以及变量对应的值。而在 Python 中,变量更多情况下是一种引用,对应的只是内存当中的一个值,该值可以根据需要存储不同的数据类型。
变量命名
变量可以任意取名,但必须遵循以下命名规则:
- 由字母、数字、下划线(_)组成
- 不能以数字开头
- 不能使用 Python 关键字
- 不能使用特殊符号,例如:
!
、@
、#
、$
、%
等
例如,定义以下变量:
age = 18 // 正确
_age = 18 // 正确
age_18 = 18 // 正确
18_age = 18 // 错误,以数字开头
global = 18 // 错误,使用关键字 global
a@e = 18 // 错误,使用特殊符号 @
除此之外,还需要注意:
- 变量对大小写敏感(区分大小写)
例如,定义以下变量:
AGE = 18 // 正确
age = 18 // 正确
AGE 和 age 是两个不同的变量,而非同一个。
建议: 变量名应做到见明知义,避免晦涩难懂。虽然可以是任意长度,但一般应确保精简、无歧义。
变量赋值
变量的基本赋值
变量是数据的引用,更像是标签。
例如,有一个 teacher 叫 Jack Ma,相当于将 teacher 这个标签拴在了 Jack Ma 上。通过这个 teacher,就顺延到了 Jack Ma,于是当我们叫 teacher 时,实际是在叫 Jack Ma,给人的感觉似乎 teacher 就是 Jack Ma,而事实上是 teacher 这个标签贴在了 Jack Ma 上。
>>> teacher = "Jack Ma"
>>> teacher
'Jack Ma'
在这里,teacher 标签就是所谓的变量,Jack Ma 就是该变量所对应的值,存储于内存中。
在 Python 中,有非常重要的一句话:对象有类型,变量无类型。 可以这样理解,就是标签不仅可以贴在整形类型的对象上,还可以贴在其他类型的对象上(例如:字符串)。变量的这个特点(随意贴标签)非常重要,它没有类型。
变量的重新赋值
变量,从字面意思理解就是变化的量,也就是说,数值是可变的。将变量从一个存储空间移至另一个存储空间中(也就是将标签移走,换到另一个位置),被称作变量的重新赋值。
例如,原来 teacher 叫 Jack Ma,后来年龄大退休了,换了一个老师叫 Pony,当我们再叫 teacher 时,其实叫的是 Pony,而非 Jack Ma。
>>> teacher = "Jack Ma"
>>> teacher
'Jack Ma'
>>> teacher = "Pony"
>>> teacher
'Pony'
一开始,相当于将 teacher 这个标签拴在了 Jack Ma 上,后来标签换了位置,拴在了 Pony 上。
如果学过其他编程语言,例如:C++,很容易想到的是 teacher 开辟了内存空间,里面存了 Jack Ma,然后这个空间当中又换为 Pony。就好比 teacher 是一个容器,里面放着值。实际在 Python 当中,正好相反,Python 是以数据为主,Jack Ma、Pony 都存储在内存当中,teacher 无非是对数据的一个引用。所以,当重新赋值后,查看 teacher 所对应的地址时,会发生变化。
每个对象在内存中都有对应的地址,这就是它的“身份”,使用 Python 的内建函数 id() 来查看:
>>> teacher = "JacK Ma"
>>> id(teacher)
140614944275064
>>> teacher = "Pony"
>>> id(teacher)
140614944310192
可以看到,重新赋值后,teacher 对应的内存空间已经变了。所以,JacK Ma 和 Pony 实际上存储在两个空间中。
为多个变量指定同一个值
同一个内存地址,可以有多个标签。这个很容易理解,一个人可以有多重身份,JacK Ma 既是 teacher,又是 ceo。
>>> ceo = teacher = "Jack Ma"
或者:
>>> teacher = "Jack Ma"
>>> ceo = teacher
看似不相关的变量,但他们指的都是同一个人 Jack Ma,不妨看一下:
>>> id(teacher)
140614944310360
>>> id(ceo)
140614944310360
显然,对应的是同一个内存地址。也就是说,teacher、ceo 是不同的标签,但是所引用的数据是同一地址上的。
将多个值分配给多个变量
要将多个值分配给多个变量,可以单独分开来写:
>>> age = 18
>>> teacher = "Jack Ma"
也可以连在一起:
>>> age, teacher = 18, "Jack Ma"
这里,值为 18 的整形分配给了变量 age,值为 “Jack Ma” 的字符串分配给了变量 teacher。
PS: Jack Ma 是马云,Pony 是马化腾 ~O(∩_∩)O哈哈~