Python语法学习
Python 脚本小子的自我养成,还远远不够!
学习环境
- Python 3.7.9
- PyCharm Professional Edition 2020.3.2
- JetBrains 2020.3 通杀补丁(学习用,有能力请支持正版)
- 黑马程序员 python 5.0
Python 基础语法
注释
1 |
|
变量
- 可改变的量为变量,指向内存的一块空间,当不使用时即会被回收
- 变量名只能由数字、字母和下划线组成,不能用关键字,不能数字开头,建议不要用中文
- 变量名尽量见名知意
- Python 中常量,一般通过全部大写字母来约定俗成
1 |
|
布尔
- True:除了 False 都是 True
- False:0、0.0、0j、’’、[]、()、set()、{}、None
1 |
|
数字
- int 整型,二进制,八进制,十进制,十六进制
- float 浮点型,小数
- conplex 复数,实部+虚部
1 |
|
类型转换
1 |
|
进制转换
1 |
|
运算符
算术运算符
1 |
|
赋值运算符
1 |
|
比较运算符
1 |
|
逻辑运算符
1 |
|
流程控制
if语句
1 |
|
三目运算符
1 |
|
while语句
1 |
|
break语句
1 |
|
continue语句
1 |
|
for语句
1 |
|
字符串
- 可用
"...."
、'...'
以及"""..."""
来表示字符串 - 字符串可用
/
来转义特殊字符,字符串前加r
,即表示原始字符串 - 不可变类型
索引
1 |
|
切片
1 |
|
格式化输出
1 |
|
常用函数
1 |
|
列表
- 用
[]
组合复合类型(不限定只能一种类型) - 使用方括号,其中的项以逗号分隔:
[a]
,[a, b, c]
- 使用一对方括号来表示空列表:
[]
- 可变数据类型,可获取,可修改,有序
1 |
|
索引
1 |
|
切片
1 |
|
遍历
1 |
|
常用函数
1 |
|
列表推导式
1 |
|
元组
- 用
()
组合复合类型(不限定只能一种类型) - 使用一对圆括号来表示空元组:
()
- 使用一个后缀的逗号来表示单元组:
a,
或(a,)
- 使用以逗号分隔的多个项:
a, b, c
or(a, b, c)
- 元素数据不可修改,有序
- 索引切片和 list 一样
1 |
|
常用函数
1 |
|
字典
- 符号为:
{}
- 数据以键值对形式出现
- 各个键值对之间用逗号隔开
- 字典是无序的对象集合,使用键-值(key-value)存储,拥有极快的查询速度
- 字典是可变类型,键(key)必须使用不可变类型
- 同一个字典中,键(key)必须是唯一的
字典创建
1 |
|
增删改查
1 |
|
常用函数
1 |
|
字典推导式
1 |
|
集合
- 多个元素的无序组合,集合是无序的,不支持索引操作
- 集合元素是唯一的,可用于去重
集合创建
1 |
|
增删改查
1 |
|
函数
- 将一段具有独立功能的代码块整合到一个整体并命名。在需要的地方调用,实现更高效的代码复用
- 函数定义参数可有可无,返回值也一样,函数必须先定义后使用
- 函数设计要尽量短小,嵌套层次不宜过深
- 函数申明应该做到合理、简单、易于使用
- 函数参数设计应考虑向下兼容
- 一个函数只做一件事,尽量保证函数语句粒度的一致性
定义函数
1 |
|
说明文档
1 |
|
变量作用域
- 局部变量,定义在函数内部,作用范围为该函数内
1 |
|
- 全局变量,定义在全局,当前 py 文件内都可访问到
1 |
|
- global(),可被用来表明特定变量生存于全局作用域并且应当在其中被重新绑定
1 |
|
- nonlocal(),表明特定变量生存于外层作用域中并且应当在其中被重新绑定
1 |
|
函数参数
- 位置参数
1 |
|
- 关键字参数
1 |
|
- 默认参数
1 |
|
- 可变长参数
1 |
|
lambda函数
1 |
|
map函数
1 |
|
reduce函数
1 |
|
filter函数
1 |
|
文件操作
文件的读
- 关于文件读四个模式
r
,以只读的方式打开文件,未找到文件会报错,文件的指针将会放在文件的开头,这是默认模式,r
打开文本文件rb
,以二进制格式打开一个文件用于只读。文件指针放在文件的开头。这是默认模式,rb
打开非文本文件r+
,打开一个文件用于读写,准确来说是读并且追加。文件指针将会放在文件的开头rb+
,以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
1 |
|
文件的写
- 关于文件写四个模式
w
,打开一个文件只用于写入。如果文件已存在则先清空后写入,如果没有文件则创建文件wb
,以二进制格式打开一个文件只用于写入。w+
,打开一个文件用于读写,巴拉巴拉wb+
,以二进制格式打开一个文件用于读写,巴拉巴拉
1 |
|
文件的追加
- 关于文件写四个模式
a
,打开一个文件用于追加。如果文件存在,新内容将写在文件已有内容之后。文件不存在则创建新文件进行写入。ab
,a+
,ab+
1 |
|
其他函数
1 |
|
with
1 |
|
Python 类与对象
- 类是对一系列具有相同特征和行为的事物的统称,是一个抽象概念,特征即属性,行为即方法
- 对象是类的一个实例,先有类,后有对象
- 类名遵循大驼峰命名如:
HelloWorld
- 属性和方法可以在类中指定也可以动态添加
- 面向对象的三个特点:封装、继承、多态
类的定义
1 |
|
魔法方法
init 方法
1 |
|
str 方法
1 |
|
del 方法
1 |
|
继承
- 所有类默认继承 object 类
- 子类继承父类的所有属性和方法
- 子类可以重写父类方法
- 多继承,一个子类可以有多个父类
单继承
1 |
|
重写方法
1 |
|
多继承
1 |
|
多层继承
1 |
|
super()
1 |
|
私有属性
1 |
|
多态
- 多态是指一类事物有多种形态
- 子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果
1 |
|
类方法
- 当方法中需要使用类对象(如访问私有类属性等),定义类方法
- 类方法一般和类属性配合使用
1 |
|
静态方法
- 静态方法既不需要传递类对象也不需要传入实例对象
- 静态方法也能够通过实例对象和类对象去访问
1 |
|
Python 错误和异常
语法错误
语法错误又称解析错误,可能是你在学习Python 时最容易遇到的错误
1 |
|
异常
即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误。 在执行时检测到的错误被称为 异常,异常不一定会导致严重后果。
1 |
|
捕获指定异常
1 |
|
捕获所有异常
1 |
|
else 语句
1 |
|
finally 语句
1 |
|
自定义异常
1 |
|
Python 模块与包
模块
模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py
自定义模块名尽量不要与已有模块同名
模块的导入
1 |
|
模块搜索顺序
- 当前目录
- python 环境变量默认目录下
- python 默认路径
1 |
|
包
包是一种通过用“带点号的模块名”来构造 Python 模块命名空间的方法,将有联系的模块组织到一个文件夹,且含有 __init__
文件
导入包
1 |
|
Python语法学习
https://reajason.vercel.app/2021/01/19/PythonLearning/