变量是编程中的一个重要概念,有关于变量的定义,维基百科是这样写的:
In computer programming, a variable or scalar is a storage location paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value.
变量和数学函数方程中的意义大致一样,代表不固定可以变化的数,只不过计算机中的变量指的是数据,即除了数之外还包括我们上章提到的数据类型。
下面我们就开始讨论一下其中的一个关键词symbolic name 标识符。
标识符
标识符,是程序员规定的具体特定含义,代表某一实体的词。在变量中,简单来说,代表着变量名。
标识符命名规则
1.1 标识符首位必须是字母或者下划线。
1.2 标识符其他部分必须是字母,下划线或者数字,而不能是其他。
1.3 标识符不能是Python关键字,比如我们之前用过的print
。
1.4 Python对标识符大小写敏感,即Myname
和myname
,系统认为是不同的两个标识符。标识符良好的命名习惯(编程风格)
2.1 尽量不要以下划线或者双下划线开头,Python此类标识符有特殊含义。
2.2 标识符尽量有代表性意义,即保持易读性。abc
可以作为标识名,代表学生的名字,但是显然studentname
会在你隔一段时间重新看代码时一目了然。
2.3 采用下划线代表空格和驼峰式命名来增加易读性。比如我们刚才的studentname
如果改成student_name
或者StudentName
,是不是会更清晰易读?
变量赋值
单独的标识符无法使用,必须经过赋值后才会和变量捆绑在一起,否则你会得到一个没有定义的错误:
>>> print score
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
print score
NameError: name 'score' is not defined
正确的做法,是要通过赋值符号 '='
,来绑定到变量上,比如:
>>> score = 90
>>> print score
90
两点注意:
-
'='
是"赋值"符号,不是等号,在大多数编程语言中都是如此,等号的写法是'=='
,没错是写两遍。 - 我习惯的写法是赋值符号左右都空一个空格,这样看起来比较清晰,尤其是代码较多的时候,但这并不强制。
>>> a = 2
>>> b = a
>>> a = 3
>>> print b
思考: b
应该是什么,2还是3?
变量无类型,对象有类型
关于这一点老齐在零基础学Python中有一段解释,在这里我不引用了,简单的解释下,我们以 a =2
为例:
a = 2
,并不是把2这个值赋予了a,而是像一个标签一样,把a
这个标识符,贴到了整数2上,让他暂时看起来像int型。如果我们这时让a = 'hello'
, 就把a
又贴到了'hello'
上,它又成了str型。
也就是说,a
本身并没有类型,它的类型只是取决于它"贴在"那个类型上,就暂时成这个类型。
要注意的是,这一点Python有区别于别的语言。
python
a = 2
type(a)
<type 'int'>
a = 'hello'
type(a)
<type 'str'>
### 练习
1. 通过变量,打印'Hello, world!'
2. 总结变量需要注意的问题。