1-计算机基础&Python概述
软件开发的常识
- 软件
- 系统软件
- 应用软件
- 开发
- 制作软件的过程
- dos命令行
- cd cd .. cd\ dir(列出当前目录下的所有文件夹以及文件)
- 计算机编程语言介绍
- C底层开发,面向过程,速度快
- C++面向对象,嵌入式,Android底层,做游戏,跨平台
- Java后端语言,开发企业级系统,开发Android
- C#后端语言,用于Unity 3D游戏
- Python高层语言,简单易学
Python概述
- Python语言
- Python是一种解释型,面向对象,动态数据类型的高级程序语言
- 脚本语言
- 弱类型语言
- Guido van Rossum(荷兰)开发
Python的优缺点
- Python的优点
- 简单易学
- 高层语言
- 可移植性(跨平台)
- 解释型语言
- 面向对象
- 可嵌入性(嵌入其他语言)
- 丰富的库&GUI图形用户界面
- Python的缺点
- 强制缩进
- 运行速度慢
- 代码不能进行加密
数据的存储
- 思考
- 数据存储在内存中(缓存/临时存储),数据存储在硬盘中(持久化/永久存储)
- 内存
- 内存是与cpu沟通的桥梁,所有的程序都运行在内存中,计算机在内存中以二进制的形式存储
- 数据
- 进制
- 进制就是进位的制度,一种进位的方式
- 常见的进制:0b二进制/0o八进制/十进制/0x十六进制
- 进制转换
- 二进制转十进制:将二进制按照权展开,相加即得到十进制
- 十进制转二进制:倒除法/将十进制数进行分解,分解为2的n次方相加
- 二进制转八进制:每三位二进制按权展开并相加得到一位八进制
- 八进制转二进制:二进制转八进制的反向过程
- 二进制转十六进制:每四位二进制按权展开并相加得到一位十六进制
- 十六进制转二进制:二进制转十六进制的反向过程
- 八进制/十进制/十六进制的相互转化:以二进制为桥梁
存储数据
- 计算机存储数据的过程:需要先在内存中开辟空间,再将数据转换为二进制存储,计算机开辟内存空间的最小单位为字节
- 用id()查看数据存储的内存地址
Python的编码规范
- 每个语句后面不要添加分号,每行最好只写一条语句
- 括号的使用=>优先级问题
- Python中通过缩进(四个空格)来区分代码块
- 尽量避免在文件名中出现中文和空格
变量
- 作用
- 需要在内存中开辟一块空间,将指定类型的值存在这块空间中
- 删除变量
- del age
- 关键字
- import keyword
- print(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']
- print(keyword.kwlist)
- 标识符
- 规则
- 只能由数字/字母/下划线组成
- 开头不能是数字
- 不能是关键字
- 严格区分大小写
- 规范
- Python官方要求字母全部小写,不同单词间用下划线间隔
- 驼峰命名:大驼峰/小驼峰,第一个单词的首字母是否大写
- 尽量做到见名知意
- 规则
- import keyword
输入输出
- input(' ')
- print(' ')
Python 的内存缓存机制
-
小整数对象池:Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,放入到缓存池中
-
单个字符:同理,也是提前创建好放入到缓存池中
-
字符串的intern(字符串驻留)机制:如果字符串中只含有数字、字母、下划线,那么python会自动开启intern机制。把创建的字符串放入一个形如字典的内存中,如果下次创建创建相同的字符串会直接从内存中拿出来
Python的垃圾回收
-
引用计数
-
优点
- 简单
- 实时性高:一旦没有引用,内存就直接释放了
-
缺点
- 维护引用计数消耗资源
- 循环引用
-
-
标记清除
- 目的:解决循环引用的问题
- 原理:把可能产生循环引用的对象放到一个链表里面,定期去检查链表里面的对象有没有循环引用,如果有就把对象的引用计数减1,如果为0就回收
- 缺点:
- 检查的时间不好控制
- 每次都去检查所有数据,开销非常大
-
分代收集
- 目的:解决标记清除的缺点
- 原理:把可能存在循环引用的链表划分为3个链表,分别叫做
- 0代:0代对象的个数达到700个,则检查1次,如果是垃圾则回收,不是则放入1代
- 1代:0代检查了10次,则1代检查1次,如果是垃圾则回收,不是则放入2代
- 2代:1代检查了10次,则2代检查1次