Python入门-变量与命名
在上一篇中,我们定义了很多变量,变量格式是啥?变量名字可以随意么?有啥命名规范么?下面细讲
变量格式
变量名称 = 常量
把常量赋值给变量的过程,就是定义变量。
定义变量
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 """
所以变量定义的本质:变量本质上只是引用了变量的内存地址!
常见面试题:如果两个变量值一致,他们的地址也一致么?
答案查阅下面参考文档。
参考文档:https://www.cnblogs.com/downey-blog/p/10482955.html
https://www.cnblogs.com/downey-blog/p/10483216.html
删除变量以及变量回收机制
删除变量方法: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 """
垃圾回收机制参考文档:https://www.cnblogs.com/lurenjia1994/p/10498593.html
变量的命名规范
#定义合法标识符的规则【规则必须遵守,否则代码会报错】: """ 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']
其他参考:
https://www.cnblogs.com/EmptyRabbit/p/7679093.html
https://www.cnblogs.com/Maker-Liu/p/5528213.html
https://www.cnblogs.com/wangcp-2014/p/4608265.html
https://www.cnblogs.com/yaksea/archive/2011/08/30/2159416.html
https://www.cnblogs.com/zhangyafei/p/10429426.html