在上一篇中,我们定义了很多变量,变量格式是啥?变量名字可以随意么?有啥命名规范么?下面细讲
变量格式
变量名称 = 常量
把常量赋值给变量的过程,就是定义变量。
定义变量
Python中的变量不需要声明,变量的赋值操作,就是变量声明和定义的过程。
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
每个变量在使用前都必须先定义,定义以后该变量才会被创建使用,
如果使用一个未被定义的变量,就会报错,代码如下。
print(a) #定义一个未赋值的变量,执行会报错 NameError: name 'a' is not defined
定义多个变量
Python中 允许同时为多个变量赋值,也可以为多个对象指定多个变量。例如:
a = b = c =1 #多个变量定义同一个值
a,b,c = 1,2,3 #多个变量,定义为多个值
改变变量
定义变量后,如果想改变变量的值,可以重新定义即可
name = "tom"
print(name)
name = "hello"
print(name)
"""
tom
hello
"""
定义变量的本质是啥?
定义的变量都存在于内存中,每创建一个变量,就会在内存中创建一个内存空间,每个内存空间都有一个ID,这个ID就是变量地址。
# 使用id()函数,可以查看变量地址,会发现,两个变量的地址是一致的。
a = 2021
print(id(a)) #查看a的ID地址
b = 2021
print(id(b)) #查看b的ID地址
"""
2105034802832
2105034801712
"""
所以变量定义的本质:变量本质上只是引用了变量的内存地址!
常见面试题:如果两个变量值一致,他们的地址也一致么?
答案查阅下面参考文档。
删除变量以及变量回收机制
删除变量方法:del 变量名
# python的垃圾回收机制原理
1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。
然而由于每个对象都包含一个对其他对象的引用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。
为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。
回收机制代码演示
# 使用getrefcount方法可以获取指针数据
import sys
a = 222
b = 333
print(sys.getrefcount(a))
print(sys.getrefcount(b))
"""
11
3
"""
变量的命名规范
#定义合法标识符的规则【规则必须遵守,否则代码会报错】:
"""
a.由数字,字母和下划线组成
b.不能使用空格和除了下划线以外的其他特殊符号
c.不能使用关键字和系统的函数名
d.不能以数字开头
e.严格区分大小写
"""
#定义标识符的规范【可以不遵守,但是代码不规范】:
"""
a.做到见名知意
b.表示形式
形式一:Python官方推荐的写法:所有的单词全部小写,不同单词之间使用下划线相连,举例:stu_score
形式二:驼峰命名法【大驼峰和小驼峰】
大驼峰:所有单词的首字母大写,类名一般采用大驼峰,举例:StuScore
小驼峰:除了第一个单词,其他单词的首字母大写,变量名和函数名一般采用小驼峰,举例:stuScore
"""
编码规范
"""
a.一行书写一条语句
b.一旦使用到运算符【+-*/等】,尽量在运算符的前后添加空格
举例: 3 + 5 = 8
c.一行代码尽量不超过80个字符,否则会导致代码可读性降低,可维护性降低
d.使用缩进表示代码块【if语句,while语句等】
注意:四个空格表示一个缩进【pycharm可使用一个tab键】
e.文件,项目以及变量等的命名尽量不要使用中文和空格
"""
关键字
键字:在Python中,已经被赋予了特殊含义的一些英文单词,例如:break,continue,finally,import等
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']