暑期带你不走偏快速学习python
2024-09-24 10:10:00 5 举报
AI智能生成
有一篇系统的路线能带你不走偏快速学习python,赶紧学习起来吧
作者其他创作
大纲/内容
解释型语言(编译型语言)
基础代码库、第三方库
python简介
官网安装python(可以自动改环境变量,自带cpython解释器)
Python的解释器很多,但使用最广泛的还是CPython
python解释器
安装python
命令行模式和python交互模式;exit()后退出python交互模式。
python代码运行助手(在线打印结果)
输入和输出
第一个python程序
Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进;在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格
代码格式
整数、浮点数、字符串、布尔值、空值(列表、字典、自定义)
变量(类型不固定,动态语言),常量
数据类型和变量
ASCII(英文)-Unicode(统一)-UTF-8(可变长编码);在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码;为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换;格式化
字符串和编码
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们
使用list和tuple
if-elif-else
条件判断
循环
使用dict和set
python基础
调用函数
定义函数
位置参数、默认参数(默认参数必须指向不变对象!)、可变参数、关键字参数、命名关键字参数*args是可变参数,args接收的是一个tuple;**kw是关键字参数,kw接收的是一个dict。
函数的参数
如果一个函数在内部调用自身本身,这个函数就是递归函数Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题
递归函数
函数
L[::2](相当于substring,只不过可以用于数组和字符串,功能更强大)
切片(Slice)
就是for循环遍历,练习没做出来
迭代/循环
列表生成器
只要把一个列表生成式的[]改成(),就创建了一个生成器迭代的数组是生成器,生成器里可以放下更多的数据
生成器(习题暂放)
迭代器=生成器(可迭代对象>迭代器)凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;集合数据类型如list/tuple、dict/set、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
迭代器(Iterator)
高级特性
把函数作为参数传入,这样的函数称为高阶函数
map/reduce(习题暂放)
filter(习题暂放)
sorted
高阶函数
函数作为返回值
返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量
闭包(不太懂)
返回函数
lambda x(参数): x * x(返回值)
匿名函数
大概是对函数的功能增强,一层又一层的给函数动态加上功能
装饰器(不懂)
偏函数
函数式编程
易管理、可复用
模块
代码书写规范这句感觉没什么作用啊?if __name__=='__main__':
作用域
使用模块
Anaconda,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库MySQL驱动程序,Web框架Flask,科学计算Numpy
安装常用模块
模块搜索路径
安装第三方模块
类的写法;类中定义属性和方法;调用属性和方法
类和实例
属性不能直接访问,通过get访问,set修改
访问限制(题目不知道错在哪)
把类看作一种数据类型:例如传入Animal类型的数据,根据实际的类型打印出不同的值,就是多态“开闭”原则:对扩展开放:允许新增Animal子类;对修改封闭:不需要修改依赖Animal类型的run_twice()等函数
动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的,有相同的方法就行
继承和多态
type():判断对象类型使用types模块中定义的常量进一步判断?
isinstance():优先使用isinstance()判断类型,可以将指定类型及其子类“一网打尽”
dir():获得一个对象的所有属性和方法配合getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态
获取对象信息
类和实例都有属性,最好不要用一样的名称
实例属性和类属性
面向对象编程
限制当前类可以定义的属性 ,对子类不起作用
子类如使用__slots__,可以定义的属性是父类加上子类的__slots__
使用__slots__
@property装饰器就是负责把一个方法变成属性调用的 get->@property; set->@width.setter(怎么这里类不用设置属性了?)
使用@property
主线往往单一继承,混入其他功能,叫做MixIn
通过排列组合快速构成所需类
MixIn
多重继承
形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的
__len__()
优化print打印出来的实例 __repr__ = __str__优化直接打印出来的实例
__str__
1、如果一个类想被用于for ... in循环2、实现一个__iter__()方法,该方法返回一个迭代对象3、Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环
__iter__
(需进一步理解)使得一个迭代器实例可以像数组一样取值和切片
__getitem__
在没有找到属性的情况下,才调用__getattr__
(需进一步理解)动态调用API的例子没看懂
__getattr__
直接对实例进行调用(有点像构造函数?)
__call__
定制类
enum题不会做
使用枚举
type()函数可以查看一个类型或变量的类型
type()函数允许我们动态创建出类
type()
先定义metaclass,就可以创建类,最后创建实例
(没看懂)ORM框架创建的例子
metaclass(一般不会使用)
使用元类
面向对象高级编程
bug、输入检查、异常处理
try...except...finally
try
如果错误没有被捕获,Python解释器来打印出错误堆栈
调用栈
logging.exception(e)程序打印完错误信息后会继续执行,并正常退出
记录错误
raise
抛出错误
错误处理(题未做)
print()
断言
import logginglogging.basicConfig(level=logging.INFO)logging.info('n = %d' % n)
logging
很麻烦,单步方式运行,一步步查看运行状态
pdb
相当于在可能出错的地方打断点,再一步步查看
pdb.set_trace()
Visual Studio Code:https://code.visualstudio.com/,需要安装Python插件PyCharm:http://www.jetbrains.com/pycharm/
IDE
调试
编写
运行
setUp与tearDown
单元测试
文档测试
错误、调试和测试
文件读写
StringIO和BytesIO
操作文件和目录
序列化
IO编程
多进程
多线程
TreadLocal
进程 vs. 线程
分布式进程
进程和线程
正则表达式
常用内建模块
常用第三方模块
virtualenv
海龟绘图
图形界面
TCP/IP简介
TCP编程
UDP编程
网络编程
SMTP发送邮件
POP3收取邮件
电子邮件
使用SQLite
使用MySQL
使用SQLAlchemy
访问数据库
HTTP协议简介
HTML简介
WSGI接口
使用Web框架
使用模板
web开发
协程
asyncio
async/await
aiohttp
异步IO
实战可以在github上搜索一些优质python项目
实战
python学习路线
0 条评论
回复 删除
下一页