工欲善其事,必先利其器。让我们先阅读一下使用文档吧~
总体概述:主要学习python的解释器、控制流工具、数据结构、模块、输入输出、错误和异常、类、标准库、
1. python开始
python本身易学,功能强大
提供高级数据结构,面向对象编程
解释型语言、可以在多平台运行、可以编写脚本同时可以编写应用级别的程序
有丰富的第三方包支持扩展
可使用c/c++对其进行扩展
python比shell更容易编写批量处理
python比c提供了更多的错误检查
python支持模块切割,便于复用,内置了大量的模块模块包括 I/O、系统调用、套接字,甚至还包括 Tk 图形用户界面工作套件。
Python 是一种解释型语言,不需要编译和链接,可以节省大量开发时间。
2. python解释器
2.1 调用解释器
这里主要是python理解为一种脚本语言,在控制台中调用执行,也可以通过文件的形式调用
2.2 解释器的运行环境
2.2.1 源文件的字符编码
命令行输入python3
3. python速览
Python 注释以
#开头
让我开始简单的上手吧~
3.1 python用作计算器🧮
3.1.1 数字
运算符
+,-,*和/可被用来执行算术运算;圆括号 (()) 可被用来进行分组
//表示向下👇取整;%表示取余**表示乘方
除法返回的是浮点数 ;混合运算的时候会把整数转为浮点数计算
3.1.1.1 逻辑运算
3.1.1.2 数据类型之间的比较
3.1.2 文本
字符串可以使用单引号单引号 (
'...') 或双引号 ("...")转译单引号或者双引号本身的话 前面加
\如果不希望前置
\的字符转义成特殊字符,可以使用 原始字符串,在引号前添加r即可:print(r'C:\some\name'),不加r的话 会把\n当作换行
3.1.3 列表
列表支持,不同类型的元素
4. 控制流工具
主要掌握
条件if
循环 for、range
pass、match、定义函数
4.1 条件
4.1.1 if
elif 是else if的缩写,用于避免多余缩进。
✏️ input是输入函数
4.1.2 match
march可以理解为switch语句
4.2 循环
4.2.1 for语句
遍历列表
利用python内置的enumeate()列举出列表中的数 ,索引值和数列的元素值
4.2.2 range()
使用range生成等差数列 ,生成的序列不包括给定的终止值。
range生成的列表和列表虽然行为一样,但是不同点在于range是在迭代的时候才会一个一个的返回期望的值
迭代
求和
总结: 目前我自己觉得range比较适合求和,迭代的话上面提到的enumerate函数相比更方便些
4.3 pass
4.4 定义函数
4.4.1 使用def来定义函数
4.4.2 给定参数的默认值
4.4.3 多次调用时的变量是否受到影响
4.4.4关键字参数
关键字的位置无所谓,但是有一条 他后面不能有位置参数parrot(1000) 这个1000就是位置参数。
还有一点,对同一个参数不能赋值两次
是否可以理解为 *name 接收列表 ** name 接收对象
4.4.5 特殊参数
既可以位置也可以关键词
仅位置
仅关键字
TODO:为什么要采用这几种方式传入参数 剩余参数
解构参数
匿名函数
字符串的说明
✏️ 注意看 打印的是print(函数名._ doc_)
注解
编码风格
5. 数据结构
主要学习列表、del、元组和序列、集合、字典
循环的技巧、深入条件控制、序列和其他类型比较
5.1 列表
5.1.1 列表本身的方法
添加: 可以添加一个元素,也可以添加一个列表,也可以在指定位置添加
删除: 可以按照值删除,可以按照位置删除
查找: 可以按照值查找位置,也可以按照位置获取值
计算长度: 可以计算列表中某个value的个数
可以排序: 正序、逆序
- list.append(x) 末尾添加一个元素
- list.extend(iterable) 在原来的列表上添加一个新列表
- list.insert(index,value) 在index的位置插入一个元素value
list.insert(len(list),value) 等同于 list.append(value)
- list.remove(value) 删除第一个值为value的元素。未找到元素的时候会触发异常
- list.pop(index) 删除指定位置的元素,并返回删除的元素值。 如果没有指定index,那么删除最后一个元素,并返回删除的元素值
- list.clear() 删除列表中所有的元素
- list.index(value[ ,start[,end]]) 在列表中查找值为value的索引, 可以指定从start开始到end结束这之间里面查找,可以取start的值,end的值取不到。 是一个左闭右开的区间
- list.count(value) 返回列表中元素值为value的个数
排序
- list.sort() 排序 改变原来的列表
- list.reverse() 逆序 改变原来的列表
- list.copy() 返回列表的浅拷贝
5.1.2 操作列表但非列表的属性方法
如len 获取列表的长度
del语句
可以删除列表中一个元素,很多元素 ,还可以删除整个变量
注意:按照索引进行的删除
迭代
多个列表迭代
迭代逆序
正序迭代
set去重
5.1.3 列表实现栈 先进后出 后进先出
使用append(value)追加元素, 使用pop() 弹出元素
5.1.4 列表实现队列
使用append(value)追加元素, 从头开始往出拿元素
5.1.5 列表的推导
相当于遍历列表,然后进行一个操作,得到一个新的列表
相当于js数组中的map、filter 及多个map、filter等操作, 目前看起来很有用
是不改变for后面的列表的
5.1.6 嵌套列表
5.2 元组
输入的时候可以不加(),但是输出的时候是有的
TODO: 留坑 元组特定用在哪里
5.3 集合
集合也支持推导式
5.4 字典
上面图片那么多内容,只需要知道字典类似于js中对象, 同时key不能使用列表,
操作字典可以通过list(d), sorted(d),del
使用dist初始化 字典的迭代
以下的代码和上面的等价
c = [v for v in raw_data if not math.isnan(v)]
6.模块
由于代码量的大量增加, 增加了模块,一个文件可以成为一个模块, 可以在另外一个文件中进行引入
定义模块
使用模块
只要知道导入的是模块名称就可以了 。模块里面定义的是模块级别的,不是全局的 防止冲突
6.1 脚本方式执行模块
附加:sys是系统相关的行参和函数 sys.argv是Python中sys模块中的一个变量,它是一个包含命令行参数的列表。当在命令行中执行Python脚本时,可以通过sys.argv获取传递给脚本的参数信息。
sys.argv列表的第一个元素sys.argv[0],通常是脚本的名称或路径。后续的元素sys.argv[1]、sys.argv[2]等是传递给脚本的命令行参数。
6.2模块搜索路径
6.3 已经编译的python
6.4标准模块
要么是为了效率,要么是提供一些基本操作
6.5dir内置函数
dir() 用于查找模块定义的名称,返回经过排序的结果
6.6 包
如何构造包的
导入和使用
6.6.1 从包中导入*
6.6.2 相对导入
6.6.3 多目录中的包
TODO: 模块的更深入使用 还需要磨练, 目前只知道简单的导入使用
7 输入和输出
这里只有两种输出:1.命令行中, 2. 文件中
7.1 输出
7.2 输入
TODO: 明天再来继续学习~