在编程语言中,需要用标识符来代指某个东西,这个东西可以是一个数据,可以是一个函数, 一个类,那么与之对应的就是变量名,函数名,类名等概念。 就如同我们每个人都有名字一样,程序里,一个具体的东西也需要有名字, 否则就无法准确的找到它并对它进行操作。
标识符的定义有5个规则:
- 第一个字符必须是字母表中字母或下划线
- 标识符的其他的部分由字母、数字和下划线组成
- 标识符对大小写敏感
- 不能将保留字作为标识符
- 标识符应当有意义,做到见名知意
当为一个变量起名字时,或者为一个函数起名字时,务必遵守上面这5条规定。
变量(variable)是计算机编程中的常见概念。 在数学,尤其是代数学中也有“变量”的概念。 计算机编程对待变量的方式稍有不同,一定要注意其中的差异。 “变量”就像计算机内存中的一个盒子,其中可以存放一个值。 如果程序稍后将用到一个已求值的表达式的结果,就可以将它保存在一个变量中。 变量是表示(或指向)特定值的名称。
如果需要一个变量,来保存学生的数量,那么会这样给变量起名字。
学生数量
student_count = 0
这个变量名称符合上述的5条规则,尤其是最后一条,当看到这个变量名称时, 大概就能猜的出来,这个变量存储的数据含义。 好的变量名描述了它包含的内容。 设想搬到一间新屋子,搬家纸箱上标的都是“重要物品”。 永远找不到任何东西!
在一些教程或脚本程序中,有时为了方便,使用 var1
, spam
、 eggs
和 bacon
等变量名作为一般名称,
但在程序中,具有描述性的名字有助于提高代码可读性。
spam = 40
可以将变量看成一个带标签(变量名)的盒子,值放在其中。spam = 42
就像是告诉程序“变量 spam
现在有整数42放在里面。
这称为赋值(assignment),将值 40
赋给了变量 spam
。
换言之,就是将变量 span
与值(或对象) 3
关联起来。
赋值之后就可以使用:
spam
40
不同于其他一些语言,使用Python变量前必须给它赋值,因为Python变量没有默认值。
eggs = 2
给变量赋值后,就可在表达式中使用它。
spam + eggs
42
spam + eggs + spam
82
spam
40
第一次存入一个值,变量就被“初始化”(或创建)。此后,可以在表达式中使用它,以及其他变量和值。
如果变量被赋了一个新值,老值就被忘记了。
这就是为什么在例子结束时,spam
求值为42
,而不是40
。
这称为“覆写”该变量。 在交互式环境中输入以下代码,尝试覆写一个字符串:
spam = 'Hello'
spam
'Hello'
spam = 'Goodbye'
spam
'Goodbye'
Goodbye1
就像盒子,这个例子中的 spam
变量保存了 'Hello'
,
直到用 'Goodbye'
替代它。
看一下使用汉字的变量:
变量是我 = 'The variable is me.'
print(变量是我)
The variable is me.
下面来看一些无效的变量名来加强理解:
有效的变量名 | 无效的变量名 |
---|---|
balance |
current-balance (不允许中划线) |
currentBalance |
current balanc (不允许空格) |
current_balance |
4account (不允许数字开头) |
_spam |
42(不允许数字开头) |
SPAM |
total__𝑢𝑚 (不允许这样的特殊字符) |
| account4 | ‘hello’(不允许’这样的特殊字符)
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']