一. 基本知识
Python的主要应用:脚本、网站后端、数据分析、机器学习等
学习Python的原因:语法简洁,内置函数多,封装适合新手,无需了解指针和内存管理等计算机偏底层的内容,
python解释器:就是把我们写的 Python 代码翻译成计算机能执行的机器指令的软件,值得多说一句的是,Python的运行过程为翻译一行,执行一行
代码编辑器:就是编写程序代码的软件
二. 安装python解释器



三. PyCharm安装

1. 安装汉化插件

四. 新建项目



说明一下:
- PyCharm自动创建的venv 文件夹,为虚拟环境文件夹,表示此项目独立的Python虚拟环境,存在的目的是让不同的项目可以使用不同的Python解释器版本,还有安装的第三方库等。此文件夹不要移动,不要删除,不要往里面放任何东西


五. 基本语法
1. print-打印函数

2. 数据类型

说明一下:
- Python语言在定义变量时,不需要指定变量的数据类型,Python程序会根据变量值,自动确定变量类型
- 当然也可以用type函数查看
还有空值类型,type(none)是class 'NoneType'
- 表示完全没有值
- None不是0,不是空字符串"",也不是False。
还有字符串是str
3. input-读取用户输入

4. 条件语句

说明一下:
- 执行语句需要缩进四个空格,如果不缩进,默认为条件语句已经执行结束
5. 列表 & 元组 & 集合 & 字典
| 类型 | 有序 | 可重复 | 可修改 | 存不同类型 | 访问方式 |
|---|---|---|---|---|---|
| list(列表) | ✅ | ✅ | ✅ | ✅ | 下标 index |
| tuple(元组) | ✅ | ✅ | ❌ | ✅ | 下标 index |
| set(集合) | ❌ | ❌ | ✅ | ✅ | 不能用下标 |
| dict(字典) | ❌(3.7+逻辑有序) | key 不可重复 | ✅ | ✅ | key 访问 |
5.1 列表 list {}
python
a = [1, 2, 3, "hello"]
- 特点:有顺序,可以重复,可以修改,可以追加删除
- 适合:需要频繁增删改的数据
5.2 元组 tuple ()
python
t = (1, 2, 3)
- 特点:有顺序,可以重复,不能修改,更安全
- 适合:不希望被改的数据,函数返回多个值
5.3 集合 set {}
python
s = {1, 2, 3}
- 特点:无序,不可重复,可以增删,自动去重
- 适合: 去重,数学运算(交集、并集)
5.4 字典 dict {}
python
d = {"name": "Tom", "age": 18}
- 特点:键值对结构,key 不能重复,通过 key 访问,查询速度非常快(哈希结构)、
- 适合:存结构化数据,模拟对象,配置信息
6. for循环


说明一下:
- pass 在Python中是一个空语句,什么都不做,占位语句**,**它的主要目的是为了保持程序结构的完整性。
7. range整数序列


说明一下:
- range的范围是前闭后开的,第三个参数是步长
8. while循环


9.format 格式化


- 推荐使用:f"{}"
10. 自定义函数

说明一下:
- 如果不写返回值,那么返回值的类型就是None
11.import-引入模块


说明一下:
- 这个有点像C++中的include,引入头文件的意思
除此之外,还有from..import...语句,还有from...import*语句,这2个都不用使用模块.函数/变量名,直接就是函数/变量名
跳转到对于源代码,ctrl+鼠标左键

第三方库搜索网站:

如果安装第三方库,在PyCharm的【终端】窗口输入 pip install 后面加上库的名字。安装完成后即可使用库的函数。

六. 高级用法
1. 封装


说明一下:
- 类的构造函数, 必须命名为 init 前后必须有两个下划线。括号内可以放任意数量的参数,但是第一个永远是被占用的,用于表示自身,约定俗称为self,它能把属性绑定在实列的对象上
2. 继承

说明一下:
- Python 的继承默认就是"公开的"
- 在子类中可以用**supper()**方法去调用父类的方法
3. 多态


说明一下:
- Python 多态 不需要继承,只要有同名方法就行。
Python 多态的三种常见形式:
- 方法重写:子类重写父类方法。
- 运算符重载:
print(1 + 2) # 数字相加
print("a" + "b") # 字符串拼接 - 内置多态:
len("abc")
len([1,2,3])
len({1:2})
4. 高级用法

说明一下:
- 由于程序会记录文件读取/写入到哪个位置,也就说第一个read有数据,第二次read就没有数据了
- 可以看情况使用seek移动文件指针
读取文件的三种方法:
- read:返回全部文件内容的字符串
- readline:返回一行文件内容的字符串
- readlines:返回全部文件内容组成的列表
5. try....except-异常处理

说明一下:
-
需要注意的是,try/except语句在捕捉错误时,依次从上往下运行,如果第一个except已经捕捉到错误,之后的except将不会执行,与if/elif语句类似,只有第一个符合条件的分支会运行。
-
else: 表示没有出现任何错误时执行的语句。
-
finally: 无论是否发生错误,都会执行的语句。
6. unittest单元测试
6.1 code.py

6.2 test_code.py

说明一下:
- 测试代码文件,必须以test开头
- 这个测试代码文件中,setUp函数就是实例化成员变量的意思,
6.3 python -m unittest

说明一下:
- 运行结束后,会提示一共运行了几个测试用例,并且展示测试结果, 一个**·** 表示一个测试一个测试通过,F 表示一个测试不通过。
6.4 常见测试方法

7. assert - 断言


8. 高阶函数

说明一下:
- 这个类似于C++中的函数指针,
9. 匿名函数
关键字 lambda,再跟上变量名,后面再跟上冒号 : ,冒号后面直接写上需要返回的结果,无需写return.


说明一下:
- 匿名函数不需要写名字,即用即仍,可以把匿名函数当作没有名字且占用行数更少的函数。以lambda作为关键字
- 匿名函数也有局限性,冒号后没法有多个语句或表达式,只适用于比较简单的场景,
- 对于多步骤的复杂逻辑或者设计循环递归等,它可能不灵活,没法用它写出来;即使写出来,可读性会很差