什么是变量
顾名思义,变量(Variable)是可以改变的量,与之相对的是不可改变的常量。
变量可以理解为数据的容器。(注:早期版本的易语言将变量称为容器。)
变量是编程中非常重要的一个基本概念。
使用变量的第一步是给变量命名。
变量命名
变量名是由用户自己定义的标识符。其命名规则如下:
由字母、下划线、数字、汉字、日文、韩文、俄文等语言文字组成。不能包含下划线以外的英文标点符号,因为这些符号被用作为运算符。另外经过测试中文标点符号也不允许,在某些语言中(比如按键精灵),中文标点符号是允许作为变量名的。
第一个字符不能是数字。因为数值使用数字开头,十六进制还使用a-f之间的字母,数字开头的标识符也表示变量会让编译器难以处理。
区分大小写。这意味着a和A是两个不同的变量。VB系语言变量不区分大小写,C系语言区分,Python采用C系语法。
长度不限。可以使用任意数量的字符表示变量名。当然同样受限于物理内存限制。
不得与关键字同名。比如if、while是系统定义的语句,不能作为变量名。
也不应与系统保留变量同名。比如__name__是系统保留的特殊变量,如果定义这个变量,会覆盖它的值。
同一作用域内是唯一的。很明显,如果已经定义了一个变量a,就不能再定义a为另一个变量了,否则会冲突,不过不同作用域内是可以同名的,比如两个不同的函数内部,都可以定义变量a,它们在各自的作用域内有效。
有时候,遵循一些额外的要求,可以让程序更易阅读、理解、维护,称为规范,需要注意的是,规范不是语法要求,不遵循规范,程序也可正常运行。比如凤姐和杨超越都符合女性定义的规则,两者都具有作为妻子的功能,但是杨超越还符合定义规范,更令人赏心悦目。(注:杨超越深受程序员群体的喜爱。年4月9日举办了第一届超越杯编程大赛。)
变量命名规范如下:
取有意义的单词。变量名要与其功能相配。比如name表示名称、age表示年龄,x表示横坐标,len_str表示字符串长度,不要取没有意义的名字,比如a、aa、bb、c等。当然你也可以使用中文或其他语言的文字。(注:在编程界的早期,变量通常前缀某个字母来表示变量的类型,由于动态语言变量的类型会变化,使得这种规范被抛弃了。现在主流规范是根据变量的功能来命名。)
使用下划线连接多个单词。比如first_name、last_name。也可以使用小驼峰命名规则,首单词首字母小写,其余单词首字母大写,比如firstName、lastName。两种编程规范都得到Python语言之父的支持,不过下划线连接的形式更为常见。
变量赋值
在静态语言中,变量都需要预先定义声明才能使用。
而在动态语言中,有的需要预先声明,有的不需要。但是都不需要声明变量的类型。
我们在“第2篇Python语言简介”中已经知道了Python是动态语言,Python语言的变量需要预先声明。
声明的方式是给变量赋值,其变量的类型和值在赋值初始化的那一刻由编译器自动指定。
可以使用=给变量赋值,在数学中=这个符号称为等于号,但在计算机编程界,这个符号称为赋值号。
在C、C++、C#、Java、JavaScript等语言中,使用两个=来表示等于号。在VB、VBS、易语言、按键精灵等语言中,赋值号和等于号均使用一个=表示。在Python中使用两个=来表示等于号。
变量赋值的格式如下:
变量名=值
其中值是赋予变量的数据,可以是字面量、常量,也可以是变量、函数、表达式等等(必须具有返回值)。变量名是用户自定义的标识符,可以在程序中使用这个标识符引用变量。
根据编程规范,赋值号的两端应该各加一个空格。下面是一个符合规范的变量赋值的示例,它将数值1赋予变量i:
下面是几个常见类型变量的赋值示例:
增量赋值
Python也支持增量赋值,也就是运算符和等号合并在一起(数值可以替换成任意合法的其他数值):
1、n+=2相当于n=n+2
2、n-=2相当于n=n-2
3、n*=2相当于n=n*2
4、n/=2相当于n=n/2
等等,具体的用法参见以后的运算符篇章。
Python不支持C语言中的自增1和自减1运算符,这是因为+和-也是单目运算符,Python会将--n解释为-(-n)从而得到n,同样++n的结果也是n。
结语
以上内容就是变量的基本概念了,变量还有一些高级概念,比如作用域,这需要在学习了函数、类的定义与变量作用范围有关的语法之后才能理解。
另外,Python中的变量都储存到一个全局字典。这个字典没有命名,函数vars()返回这个字典的引用。
前文温习
Python教程:第6篇Python基本语法之字符串
Python教程:第7篇字符串基本操作
Python教程:第8篇字符串对象操作
Python教程:第9篇数值等字面量的表示方法