也许你知道学习一门语言的第一件事就是在屏幕上输出"Hello world!"。
但是请别着急!在本系列文章中,我希望在讲如何输出之前,先谈谈Python中的各种量。因为,输出、输入语句也是基于各种“量”来完成的。我想,如果连“变量名”“字符串”都没有搞清楚,那么print()啊input()啊之类的语句里面的参数、赋值就无从谈起了。
不过也不用担心!本系列文章中的第一个程序仍然会是Hello world。这也就意味着在这几讲中,我们不会接触到上手搓代码的实操。我想要先讲讲一些“理论”。
Python中的量
编程是基于对各种“量”的调用、运算等操作完成的。我相信,每一种编程语言都和“量”脱离不开关系——这些不同语言中的“量”既有个性,也有通性。在这里,我们只谈Python中的、初学者用得到的、常见的各种“量”。
在Python下,有各种类型的量。不同类型的量都有各自的特点。比如说整数型(int),用于表示整数;浮点型(float),用于表示实数;字符型(str),用于表示单个或一串字符,等等。在接下来的几讲中,我们接下来将会了解到以下几种常见的量:
类型名称 | 类型对应的量 |
---|---|
整数型(int) | 正负整数、零 |
浮点型(float) | 实数 |
字符型(str) | 单个字符以及字符串 |
布尔型(bool) | 真、假 |
列表(list) | 有序存储各类型的变量 |
字典(dict) | 无序(根据键值对)存储各类型的变量 |
每一种类型的量都有常量、变量之分。常量在我们写代码的时候是看得见、摸得着的。例如,15是整数型常量,1.75是浮点型常量,"Hello world!"是字符型常量。而变量在我们写代码的时候是看不见、摸不着的,我们用一个变量名来表示这个量,就像我们用不同的名字称呼不同的人一样。
在开始分类讲不同的类型之前,我们不妨先了解一下我们可以用什么样的名字称呼不同的变量。
给Python中的变量命名
基本规则
给一个变量起名字有点像注册账号的时候给自己起一个昵称或者角色名。在Python中,命名并不是随心所欲的;命名变量,需要遵守以下几个基本规则:
- 变量名只能由英文字母(区分大小写)、数字以及下划线组成。
- 变量名不能以数字开头。
- 变量名不能与Python中的关键字重复。
根据以上几点规则,我们就能够知道哪些变量名是合法的,哪些变量名是非法的【注:这里指的“合法”“非法”是相对于编程而言的;如果你在写代码时“非法”命名了一个变量,并不会招致被起诉之类的事情发生。】如果你看不明白,没关系,我们来看几个命名的例子:
张三;a;is_legal;cnt;Cnt;__name__;1student;student1;class;very good。
- 根据第一条命名规则,我们可以确认“张三”不是一个合法的变量名,因为张三不属于英文字母,也不属于数字或者下划线。同样,包含了一个空格的“very good”也不是一个合法的变量名。
- 根据第二条命名规则,我们可以确认“1student”不是一个合法的变量名,因为它以数字“1”开头。
- 根据第三条命名规则,我们可以确定“class”不是一个合法的变量名,因为它与Python中的关键字冲突。
- 另外,根据第一条命名规则中的“区分大小写”,我们可以知道cnt和Cnt表示的是两个不同的变量。
可能你不知道Python中的关键字是什么意思,现在给你一个比较简单粗暴但初级的判断方式:在IDLE中打代码的时候,如果你的变量名变色了,那么这个变量名八成是和关键字冲突了。就像这样:
非法变量名的修改
如果我的变量名是非法的,或者和其他变量名产生了重复,那么该如何做修改?接下来介绍几个比较常用的方法。
- 大小写更换。例如变量名class修改为Class。
- 添加下划线。例如变量名very good修改为very_good。
- 数字移至末尾。例如变量名1student修改为student1。
- 添加修饰词。例如变量名sum修改为my_sum。
更好的变量名
在实际编程中,对于机器而言,变量名的选取是无所谓的;但是对于编写程序和阅读代码的人而言,变量名的选取对于一段代码的可读性有着相当重要的影响。如果通篇代码只有a,b,c之类的不明所以的变量名,那么这段代码的可读性大概率是不高的。因此,我们追求更加标准、美观的变量命名。
我当然不会告诉你,在实际考试中,如果看不懂一个程序在干什么,通过看变量名也可以猜出个七七八八。
先来了解一下几种常用的命名方式:下划线命名法、小驼峰命名法、大驼峰命名法。
下划线命名法:顾名思义,就是通过下划线代替空格,将几个词语连接在一起组成一个合法的变量名。例如is_legal,my_class,day_of_week。
小驼峰命名法:对于一组单词,去掉空格,将除了第一个单词的其余单词的首字母大写处理,其余字母均小写。例如getElementById,myClass,isLegal。
大驼峰命名法:和小驼峰命名法类似,唯一的区别就是第一个单词也要首字母大写。例如MyClass,DayOfMonth,StudentName。
除了以上命名方式以外,还有一些常用的(或曾在考卷中出现过的)变量命名方式。虽然不一定要像下面这样命名,但是如此命名已是约定俗成。使用这类名称的变量基本上都有特定的用途。请看:
i、j、k:计数变量。多用于循环结构中用于计数,判断什么时候跳出循环。
cnt:计数变量。单词count的缩写。与i、j、k一类不同,名为cnt的变量计得的数通常会用于进一步处理。例如计算1至100中有几个质数,就可以用cnt来存储计数结果。
sumn、total:总和。例如计算1至1000的和,就可以利用sumn、total名称的变量来存储加和结果。
maxn、minn:最大值、最小值。
res:用于存储结果。单词result的缩写。名为res的变量用途广泛,可能会出现在代码的任何角落。
ind:索引(下标)。单词index的缩写。名为ind的变量常用于记录目标位置对应的索引(关于什么是“索引”,这点在后续会讲到)。
tmp、temp:临时用的变量。单词temporary的缩写。名为tmp、temp的变量通常在一个特定的范围内起量的中转作用(例如交换两个变量的值的场合),然而在该范围之外就没有什么作用了。
st、ed:开始、结束。单词start、end的缩写。
l、r:左(端点)、右(端点)。单词left、right的首字母。
mid:中值。单词middle的缩写。
除此之外,如果你在考试当中也可以采用拼音首字母的方法来猜测一个变量的功能或者含义(例如xs表示“学生”,ls表示“老师”,bh表示“编号”等等)。
至此,你已经基本掌握了:
- 如何判断一个变量名是否合法;
- 如何合法地命名一个变量;
- 如何将变量名变得更加易懂、直观;
- 一些常见用途变量的命名方式。
讲这些规则是为了后续演示时的方便,以及实操时代码的规范。在下一篇文章:《第二讲:Python中的各种“量”(二)》中,我们将对于文章开头表格中列出的不同类型的变量进行简要讲解。