Python自学教程大纲
小白入门总结——马永亮Python视频1--60讲大纲
大纲
- Python编程基础
- Python对象类型及其运算
- Python流程控制
- Python迭代器和列表解析
- Python文件对象
- Python函数
- Python类与面向对象
- Python模块
- Python异常
- Python执行环境
- Python代码的测试、调试与探查
01. Python编程基础
Python程序文件结构
程序→模块→语句→表达式
Python的关键要素(8个)
要素#1:基本数据类型
- Integral类型
- 浮点类型
- 字符串
要素#2:对象引用(变量)
变量是指向内存对象的引用(变量没有类型,对象才有)
变量命名规则
Python命名惯例
要素#3:组合数据类型
- 序列类型(最基本的)
- 列表
- 元组
- 字符串
- Unicode字符串
- buffer对象
- xrange对象
- 集合类型
- 集合
- 映射类型
- 字典
要素#4:逻辑操作符
- ①身份操作符
- ②比较操作符
- ③成员操作符
- ④逻辑运算符
要素#5:控制流语句
- if
- while
- for…in
- try
要素#6:算数操作符
要素#7:输入/输出
要素#8:函数的创建与调用
Python编程风格
语句和语法
标识符
命名惯例
Python文件结构
- ①起始行
- ②模块文档
- ③模块导入
- ④(全局)变量定义
- ⑤类定义
- ⑥函数定义
- ⑦主程序
02. Python对象类型及其运算
所有数据皆对象
所有对象都有一个身份(id)、一个类型(type)、一个值(value) ;
所有对象都有引用计数(sys.getrefcount()) ;
对象都是类实例化而来
类:数据(即变量)+方法(即函数)
Python核心数据类型
- 数字:int,long,float,complex,bool
不可变 - 字符:str,unicode
不可变
可迭代对象
支持操作:切片,索引,增,删,改 - 列表:list
容器类型,可变
可迭代对象(列表解析)
支持操作:切片,索引,增,删,改 - 元组:tuple
容器类型,不可变
可迭代对象
支持操作:切片,索引 - 字典:dict
容器类型,可变,无序
可迭代对象
索引非常快
支持操作:索引,增,删,改 - 集合:set
无序,可哈希
支持操作:并,交,差 - 文件:file
- 其他类型:frozenset(冻结集合),类类型(类本身也是一种类型),None
表达式和语句
- 表达式:某事
表达式操作符(存在运算优先级) - 语句:做某事
- 赋值语句
- 调用语句
- 条件语句
- 控制语句
- ……
03. Python流程控制
if 语句
if boolean_expression1:
suite1
elif boolean_expression2:
suite2
....
else:
else_suite
while 循环语句
一般用于非遍历式的,速度比较慢
while boolean_expression:
while_suite
else:
else_suite
for 循环语句
用于可遍历式的,速度快
for expression1 in iterable:
for_suite
else:
else_suite
04. Python迭代器和列表解析
如果某对象在其内部实现了__iter__
或__getitem__
方法,则该对象为可迭代(iterable)对象。
- 字符,列表,元组;
- 字典;
- 文件
迭代器(也叫游标)
- 生成方式:
- 直接调用内置的`__iter__`方法;
- iter() 函数
- 调用方式:next()
- 不可逆,遍历完后要重新创建
▲列表解析
- 根据已有列表,高效生成新列表的方式。
- 语法:
[ expression for iter_var in iterable ]
[ expression for iter_var in iterable if cond_expr]
- 直接返回一个新列表
▲生成器
- 返回一个生成器对象,一次只生成一个值——惰性计算方式
- 语法:
(expr for iter_var in iterable)
(expr for iter_var in iterable if cond_expr)
05. Python文件对象
- 文件和文件系统
- 打开文件
- 语法:ar_name = open(name [, mode [, bufsize]])
- 打开模式mode:r,w,a,r+,w+,a+
- python文件是可迭代对象:
next()
- 读取行:
.readline(),readlines()
- 指针
- .tell()
- 移动指针:seek(offet [, whence])
- offset: 偏移量
- whence: 偏移的起点
0:从文件头部开始偏移(默认)
1:从当前位置开始偏移
2:从文件尾部开始偏移
- 关闭文件:.close()
os模块
- 与 目录 相关的方法
- 与 文件 相关的方法
- 与 访问权限 相关的方法
- 与 文件描述符 相关的方法
- 与 设备文件 相关的方法
pickle模块
可以直接将python中的原生对象存储到文件中
06. Python函数
-
python中有4种函数:
- ①全局函数
- ②局部函数
- ③lambda函数/匿名函数
- ④方法(类中的函数)
-
创建函数
- 语法:
def funtionName(parameters):
suite
-
函数作用域(名称空间)/变量名解析
- LEGB原则:本地→函数内→全局→内置
- 函数的闭包(工厂函数)
- 函数定义了本地作用域
- 模块定义了全局作用域
-
参数传递
注意:不要在函数内部去修改可变对象 -
参数匹配模型
- 位置参数
- 关键字参数
- 默认参数
- 可变参数
匿名函数lambda
- 语法:
lambda args: expression
是个表达式而非语句,直接返回函数对象
Python函数式编程/泛函编程
就是把函数当作参数传递给另一个函数,实现函数调用函数
- 过滤器:
filter(func, seq)
- 映射器:
map(func, seq1 [, seq2 ...])
- 折叠:
from functools import reduce
reduce(func, seq1 [, init])
yield生成器
在函数中使用yield,会返回一个生成器对象
装饰器
本身也是一个函数
功能:增强被装饰函数的功能
使用@
符号进行调用
递归函数
自己调用自己
组成:边界条件,递归前进段,递归返回段
函数的设计规范
- (降低)耦合性
- (提高)聚合性
07. Python类与面向对象
python既可以面向过程,也能够面向对象。
面向对象编程(OOP)
- 先有类,类实例化出对象
- 类的成员:状态集合(数据)+ 转换这些状态的操作集合(方法)
类间的关系
1、依赖(“uses-a”)
2、聚合(“has-a”)
3、继承(“is-a”)
3个原则
- 封装(Encapsulation)
- 继承(Inheritance)
- 多态性(Polymorphism)
创建类
- 一般形式 :
class ClassName(bases):
'class documentation string'
data = value #定义数据属性
def method(self, ...): #定义方法属性,可调用
self.meber = value
类中每个方法必须具有self参数,它隐含当前实例之意
类属性
object.attr
- 获取方式:
.__dict__
或dir()
- 特殊类属性
__dict__, __name__, __doc__, __bases__, __module__, __class__
类方法
- 调用:
object.method()
- python规定,没有实例,方法不允许被调用,此即为“绑定”
python构造器
每一个类都有一个称为构造器的特殊方法——__init__
隐性地为实例提供属性
python析构器/解构器
__del__
销毁一个实例
实例属性
实例仅拥有数据属性(严格来说,方法是类属性)
通常通过构造器__init__
为实例提供的属性
类的继承
- 创建子类:
class SubClassName(ParentClass1 [, ParentClass2, ...]):
'optional class documentation string'
class_suite
- 属性搜索树
类、实例和其他对象的一些内建函数
issubclass()
isinstance()
hasattr()
super()
运算符重载
在方法中拦截内置的操作,重新定义
08. Python模块
python模块其实就是python的程序文件(.py)
python程序框架
- 顶层文件(1个):程序执行入口
- 模块文件(0,1,多个)
- 标准库模块
导入模块
import module1 [, module2 [,... moduleN]]
import module as module_alias
form module import name1 [, name2 [, ... nameN]]
模块的工作机制
import时会执行3个步骤
- 找到模块文件
模块搜索——搜索路径:sys.path
- 编译成字节码
- 执行模块的代码来创建其所定义的对象
python包
将一组模块归并到一个目录中,此目录即为包
import dir1.dir2.mod1 #包名.子包名.模块名
模块的顶层执行及被导入
-
顶层执行
作为顶层文件
内置属性__name__
的值为__main__
-
被导入
作为模块文件
内置属性__name__
的值为模块名
发布python模块或程序
使用disutils
发布模块
09. Python异常
python的运行时发生的错误称作异常
- 语法错误
- 逻辑错误
异常的功用
- 错误处理:默认停止程序,打印错误信息
- 事件通知
- 特殊情况处理
- 终止行为
- 非常规控制流程
检测和处理异常
通过try
语句检测
try-except
:检测和处理异常try-finally
:仅检查异常并做一些必要的清理工作
- 复合形式:
try-except-finally
自定义异常——raise
格式:raise [SomeException [, args [, traceback]]]
异常对象
- 异常是一个对象
- 基类:Exception,BaseException
- 标准异常类StandarError
- 自定义异常类
- 多重继承:从自定义异常类和标准异常类进行多重继承
- python标准库中的许多模块都定义了自己的异常类
class CustomAttributeError(CustomException, AttributeError):
pass
assert断言语句
在程序中引入调试代码,实现手动触发异常
简化版的自定义异常方式
assert condition [, expression]
10. Python执行环境
Python解释器环境与选项
启动解释器的命令行参数:python [option] [-c cmd| filename | - ] [args]
Python解释器环境变量
11. Python代码的测试、调试与探查
python文档字符串(docstrings)
内置函数help()
或对象的默认方法__doc__
可显示
doctest模块
基于文档对程序本身做测试
可创建自测试的模块
if __name__ == '__main__':
import doctest
doctest.testmod()
--完--
附:本文思维导图版:https://mp.weixin.qq/s?__biz=MzI2ODU3MDE0NQ==&mid=2247483873&idx=1&sn=2e50e9c2c04a0607711bdf3d3d7f2a88&chksm=eaecdaafdd9b53b95d6c3b75ada25090e70c1b6c1a0d73b3a2ca7b1ccedb47c592a8989b6f7a&token=2117383101&lang=zh_CN#rd
更多推荐
Python自学基础教程大纲
发布评论