Python入门
1.编程语言的种类有哪些?
机器语言(奴隶的母语)
直接用“0”和“1”构成的指令去编写程序,即用计算机能够直接理解的二进制指令编写程序,计算机可以无障碍理解。
优点:运行效率最高
缺点:开发效率最低
汇编语言
用英文标签取代二进制去编写程序。
优点:运行效率高
缺点:开发效率低
高级语言
用人的语言区写程序,计算机无法直接理解,需要翻译,按照翻译方式的不同分为两种:编译型 和 解释型
编译型(例如C):类似于谷歌翻译(编译器)
优点:运行效率高于解释型
缺点:开发效率低于解释型
解释型(例如Python):类似于同声传译(解释器)
优点:开发效率高于编译型
缺点:运行效率低于编译型
2.机器语言、汇编语言、编译型语言、解释型语言的对比
开发效率:机器语言 > 汇编语言 > 编译型语言 > 解释型语言
运行效率:解释型语言 > 编译型语言 > 汇编语言 > 机器语言
跨平台性:机器语言 > 解释型语言 > 编译型语言 > 汇编语言
3.什么是Python解释器?
Python解释器是专门用来执行python语言,并且解释执行的
4.运行Python程序的2种方式
1.交互式
可以即使得到程序的运行结果,主要用于调试
2.脚本的方式
把程序写到文件里(约定俗称文件名后缀为.py),然后用python解释器解释执行其中的内容
5.1个Python应用程序运行的3个步骤
python3.8 C:\a\b\c.py 执行python程序经历三个步骤
1.先启动python3.8解释器,此时相当于启动了一个文本编辑器
2.解释器会发送系统调用,把c.py的内容从硬盘读入内存,此时c.py中的内容全部为普通字符,没有任何语法意义
3.解释器开始解释执行刚刚读入内存的c.py的代码,开始识别python语法
对比文本编辑器读取C:\a\b\c.py文件内容也经历了三个步骤
1.先启动文本编辑器
2.文本编辑器会发送系统调用,把c.py的内容从硬盘读入内存
3.文本编辑会将刚刚读入内存的内容控制输出到屏幕上,让用户看到结果
总结:
二者在前两个阶段做的事情完全一致
唯一不同的就是第三个阶段对读入内存的python代码的处理方式不同
6.什么是注释?怎么用注释?
注释是对关键代码的解释说明
被注释的代码不会被执行
单行注释:#
# 我被注释了,不会被执行
多行注释:'''''' """"""
'''
注释1
注释2
注释3
'''
"""
注释1
注释2
注释3
"""
7.什么是变量?为什么要有变量?怎么使用变量?
变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
原则:先定义,后引用
name = 'egon' # 定义变量 ---> 存
print(name) #引用变量 ---> 取
8.变量的3大组成部分
变量名:是指向等号右侧值的内存地址的,用来访问等号右侧的值
赋值符号:将变量值的内存地址绑定给变量名
变量值:代表记录的事物的状态
9.变量名的命名的规则
原则:变量名的命名应该见名知意
1.变量名只能是 字母、数字或下划线的任意组合
2.变量名的第一个字符不能是数字
3.关键字不能声明为变量名,常用关键字如下
['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']
PS:不要用拼音,不要用中文,在见名知意的前提下尽可能短
10.变量名的命名风格
1.纯小写加下划线的方式(在python中,关于变量名的命名推荐使用这种方式)
age_of_alex=73
print(age_of_alex)
2.驼峰体
AgeOfAlex=73
print(AgeOfAlex)
11.变量值三个重要的特征
id:反映的是变量值的内存地址,内存地址不同id则不同
type:不同类型的值用来表示记录不同的状态
value:值本身
变量的值不同,id不同
变量的值相同,id可以相同,也可以不同
id相同,值一定相同(同一块内存地址,全都相同)
id不同,值可以相同,也可以不同(不同的内存地址,可以放一样的,也可以不一样)
12.is 与 == 的区别
is:比较左右两个值身份id是否相等
==:比较左右两个值他们的值是否相等
13.说一下Python的垃圾回收机制
什么是垃圾回收机制?
垃圾回收机制(Garbage Collection)简称GC, 是python解释器自带的一种机制, 专门用来回收不可用的变量值所占用的内存空间。
为什么要有垃圾回收机制?
程序在运行的过程中会申请内存空间, 而对于一些无用的内存空间如果不及时清理的话会一直占用内存空间, 进而造成内存溢出, 最终导致程序GG。
但是内存管理是一件麻烦事, Python则提供了垃圾回收机制来释放不必要的内存空间。
垃圾回收机制的3个工作原理:
1.引用计数:
Python中,每一个东西都是对象,底层实现中都是一个PyObject。
其中,ob_refcnt属性记录着该对象的引用次数,当有东西引用该对象时,该属性会加1,引用该对象被删除时,该属性会减1,如果引用次数为0,就会触发垃圾回收机制。
优点:
简单、实时(将处理垃圾时间分摊到运行代码时,而不是等到一次回收)
缺点:
1.保存对象引用数会占用一点点内存空间
2.每次执行语句都可能更新引用数,不再使用大的数据结构时,会引起大量对象被回收
3.不能处理循环引用的情况
2.标记\清除:
此方式主要用来处理循环引用的情况,只有容器对象(list、dict、tuple,instance)才会出现循环引用的情况。
过程:
1.标记阶段,遍历所有的对象,如果是可达的(reachable),也就是还有对象引用它,那么就标记该对象为可达。
2.清除阶段,再次遍历对象,如果发现某个对象没有标记为可达,则就将其回收。
3.分代回收:
在循环引用对象的回收中,整个应用程序会被暂停,为了减少应用程序暂停的时间,Python 通过“分代回收”(Generational Collection)以空间换时间的方法提高垃圾回收效率。
过程:
1.将所有容器对象放到一个双向链表中(链表为了方便插入删除),这些对象为0代
2.循环遍历链表,如果被本链表内的对象引入,自身的被引用数-1,如果被引用数为0,则触发引用计数回收条件,被回收掉
3.未被回收的对象,升级为1代
简化理解:
以班级为例,可以把学生分为三类:学霸、普通学生、学渣
学霸:过于优秀,一周查一次作业
普通学生:一般般,三天查一次
学渣:不用多说,每天都查
虽然分级检查了,检查的时间效率变高了,但是存在着缺陷,如果学霸不交作业,要下一周才能查出来,那他的学霸地位就不保了,存在漏洞。
14.什么是小整数池?
从python解释器启动那一刻开始,就会在内存中事先申请好一系列内存空间存放好常用的整数
范围是:[-5,256]
15.什么是常量?
常量 就是不变的量
注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念
AGE_OF_ALEX=73 # 小写字母全为大写代表常量,这只是一种约定、规范