003-python基础-变量与常量
一、变量的定义
变量就是用来在程序运行期间存储各种需要临时保存可以不断改变的数据的标示符,一个变量应该有一个名字,并且在内存中占据一定的存储单元,在该存储单元中存放变量的值。
二、变量的声明
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 name = "wupeiqi"
上述代码声明了一个变量,变量名为: name,变量name的值为:"wupeiqi"
变量的作用:昵称,其代指内存里某个地址中保存的内容
三、变量的命名规则
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
- ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
注意:在python中,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。一般的,变量名用小写字母表示,与人们的日常习惯一致,以增加可读性。
四、变量名的命名习惯
变量名的定义在能表达清楚它的作用的前提下越简洁越好,能用一个单词表述清楚的就不要用两个。
复杂变量命名,选择下划线“_”或首写字母大写的形式。如:
CheckCurrentConnCount
check_current_conn_count
五、常量
常量就是不能变的变量。在python中,通常用全部大写的变量名表示常量,如:
PI = 3.14159
但事实上PI仍然是一个变量,python根本没有任何机制保证变量PI不会被改变,所以全部大写的变量名表示常量只是一个习惯上的用法。
六、变量的赋值及在内存中的理解
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 name1 = "wupeiqi" 5 name2 = "alex"
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 name1 = "wupeiqi" 5 name2 = name1
当变量name1赋值给另一个变量name2时,解释器只是把name1所指向的内存地址赋值给了name2,因此name1和name2并没有发生直接的关联,只不过是他们都同时指向同一个内存地址而已,这也就是为什么你把name1指向一个新地址后,而name2的值还是保持不变的原因。
1 name1 = "wupeiqi" 2 name2 = "alex" 3 print("name1 id is",id(name1)) 4 print("name2 id is ",id(name2)) 5 print("".center(40,"-")) 6 name2 = name1 7 print("name1:", name1) 8 print("name2:", name2) 9 print("name1 id is",id(name1)) 10 print("name2 id is ",id(name2)) 11 print("".center(40,"-")) 12 name1 = "new" 13 print("name1:", name1) 14 print("name2:", name2) 15 print("name1 id is",id(name1)) 16 print("name2 id is ",id(name2)) 17 18 # 输出 19 name1 id is 10728928 # name1的初始id 20 name2 id is 10729600 # name2的初始id 21 ---------------------------------------- 22 name1: wupeiqi 23 name2: wupeiqi 24 name1 id is 10728928 25 name2 id is 10728928 # name1把内存地址赋值给name2 26 ---------------------------------------- 27 name1: new 28 name2: wupeiqi 29 name1 id is 9362712 # name1指向新的内存地址 30 name2 id is 10728928 # name2不变