python-知识点的复习
一、模块、包
1、什么是模块?
1、把相同功的函数放在一个py文件里,称为模块。
2、一个PY文件就称为一个模块。
3、模块有什么好处:
1、容易维护。
2、减少变量和函数名冲突。
4、模块种类:
1、第三方模块——别人写的模块
2、内置模块——编译器自带模块(如:os、sys、等)
3、自定义模块——自己编写的模块
5、模块怎么导入:
通过import命令导入,eg:import os(模块名)
2、什么是包?
1、把多个模块放在同一个文件夹内,这个文件夹称为包。
2、文件夹称为包还有一个条件——文件夹里要有__init__.py模块。
3、模块与包有什么区别
1、模块——一个py文件就称一个模块
2、包——一个包含有__init__.py的文件夹称为一个包;一个包里可以有多个py模块。
json、pickle
1、什么是序列化?
1、把内存数据转换成字符串。
1、把内存数据保存到硬盘。
2、把内存数据传输给他人(由于网络传输是通过二进制传输,所以需要进行转换)。
2、序列化的模块有两个,json和pickle
2、json、pickle有什么优点和缺点?
1、json——把json所支持的数据转换成字符串
优点:体积小、跨平台。
缺点:只支持int、str、list、dict、tuple等类型。
2、pickle——把python所支持的所有类型转换成字符串
优点:支持python 全部数据类型
缺点:只能在python平台使用,占用空间大。
3、json和pickle有4个方法
load 、loads 、dump 、dumps
load:通过open函数的read文件方法,把内存数据转成字符串
loads:把内存数据转成字符串
dump:通过open函数的write文件方法,把字符串转换成相应的数据类型。
dumps:把字符串数据转成相应的数据类型。
shelve
1、什么是shelve?
1、shelve是一种key,value 形式的文件序列化模块;序列化后的数据是列表形式。
2、底层封装了pickle模块,支持pickle模块所支持的数据类型。
3、可以进行多次反序列化操作。
hashlib
1、什么是hashlib?
hashlib 模块——也称‘哈希’模块。
通过哈希算法,可以将一组不定长度的数据,生成一组固定长度的数据散列。
特点:
1、固定性——输入一串不定长度的数据,生成固定长度的数字散列。
2、唯一性——不同的输入所得出的数据不一样。
2、md5
输入一串不定长度的数据,生成128位固定长度的数据。
特点:
1、数字指纹——输入一串不定长度的数据,生成128位固定长度的数据(数字指纹)。
2、运算简单——通过简单的运算就可以得出。
3、放篡改——改动很少,得出的值都会不一样。
4、强碰撞——已知MD5值,想找到相同的MD5值很难。
函数
1、什么是函数?
把代码的集合通过函数名进行封装,调用时只需要调用其函数名即可。
有什么好处:
1、可扩展
2、减少重复代码
3、容易维护
2、函数的参数?
函数可以带参数:
形参:
1、在函数定义是指定。
2、函数调用时分配内存空间,函数运行结束,释放内存空间。
实参:
1、形式可以是常量、变量、表达式、函数等形式。
2、无论是何种形式,都必须要有明确的值,以便把数据传递给形参。
默认参数:
1、函数定义时可以指定默认参数(eg: def func(a,b=1))
2、传参时指定了默认参数,就使用传参时的值,没有指定,则使用默认参数的值。
关键参数:
1、函数传参时需按顺序传参,如果不按顺序传参可以使用关键参数传参。
非固定参数:
1、当不确定参数的数量时可以使用非固定参数。
2、非固定参数有两种:1.*args——(传入的参数以元组表示)。2.**kwargs——(传入的阐述用字典表示)
3、函数的返回值
1、函数可以把运算的结果返回。
2、函数可以有返回值,也可以没有返回值。
有返回值——通过return返回。
没有返回值——返回值为None
3、函数遇到return,代表函数运行结束。
4、函数的种类
嵌套函数——一个函数包含了另一个函数。
高阶函数——一个函数的参数引用了另一个函数,一个函数的返回值是另一个函数。
匿名函数——不用显式指定函数名的函数(lambrda),常和map和filter配合使用。
递归函数
1、函数内部引用了函数自身
2、函数里有一个明确的结束条件。
递归函数的特性:
1、有一个明确的结束条件
2、每次递归的规模都应有所减少
3、递归函数的效率不高。
作用域
1、名称空间
名称空间就是存放变量名和变量值(eg:x=1)绑定关系的地方。
1、名称空间种类:
local:函数内部,包括形参和局部变量。
global:函数所在模块的名字空间。
buildin:内置函数的名字空间。
2、变量名的作用域范围的不同,是由这个变量名所在的名称空间所决定的。
全局范围:全局存活,全局有效。
局部范围:局部存活,局部有效。
2、作用域查找顺序
作用域查找顺序:
local——》enclosing function——》global——》builtin
local:函数内部,包括形参、局部参数。
enclosing function:内嵌函数。
global:函数所在模块。
builtin:内置函数。
闭包
1、什么是闭包
1、一个嵌套函数,分别有内函数,外函数。
2、内函数使用了外函数的变量。
3、外函数返回了内函数的应用地址。
4、那么这个嵌套函数就称为闭包。
2、闭包有什么意义
1、闭包返回的对象不仅仅是一个对象,而且还返回了这个函数的外层包裹的作用域。
2、无论这个函数在何处被调用,都优先使用其外层作用域。
装饰器
1、什么是装饰器
1、装饰器本质上就是一个闭包函数。
2、装饰器的作用是,在不改变原有函数的调用方式下,增加代码的功能。