模块、包 什么是模块? 1、把相同功的函数放在一个py文件里,称为模块。 2、一个PY文件就称为一个模块。 模块有什么好处: 1、容易维护。 2、减少变量和函数名冲突。 模块种类: 1、第三方模块——别人写的模块 2、内置模块——编译器自带模块(如:os、sys、等) 3、自定义模块——自己编写的模块 模块怎么导入: 通过import命令导入,eg:importos(模块名) 什么是包? 1、把多个模块放在同一个文件夹内,这个文件夹称为包。 2、文件夹称为包还有一个条件——文件夹里要有__init__.py模块。 模块与包有什么区别 1、模块——一个py文件就称一个模块 2、包——一个包含有__init__.py的文件夹称为一个包;一个包里可以有多个py模块。 json、pickle 2、pickle——把python所支持的所有类型转换成字符串 优点:支持python 全部数据类型 缺点:只能在python平台使用,占用空间大。 3、json和pickle有4个方法 load 、loads 、dump 、dumps load:通过open函数的read文件方法,把内存数据转成字符串 loads:把内存数据转成字符串 dump:通过open函数的write文件方法,把字符串转换成相应的数据类型。 dumps:把字符串数据转成相应的数据类型。 什么是shelve? 1、shelve是一种key,value 形式的文件序列化模块;序列化后的数据是列表形式。 2、底层封装了pickle模块,支持pickle模块所支持的数据类型。 3、可以进行多次反序列化操作。 什么是hashlib? hashlib 模块——也称‘哈希’模块。 通过哈希算法,可以将一组不定长度的数据,生成一组固定长度的数据散列。 特点: 1、固定性——输入一串不定长度的数据,生成固定长度的数字散列。 2、唯一性——不同的输入所得出的数据不一样。 2、md5 输入一串不定长度的数据,生成128位固定长度的数据。 特点: 1、数字指纹——输入一串不定长度的数据,生成128位固定长度的数据(数字指纹)。 2、运算简单——通过简单的运算就可以得出。 3、放篡改——改动很少,得出的值都会不一样。 4、强碰撞——已知MD5值,想找到相同的MD5值很难。 什么是函数? 把代码的集合通过函数名进行封装,调用时只需要调用其函数名即可。 有什么好处: 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、变量名的作用域范围的不同,是由这个变量名所在的名称空间所决定的。 全局范围:全局存活,全局有效。 局部范围:局部存活,局部有效。 作用域查找顺序 作用域查找顺序: local——》enclosingfunction——》global——》builtin local:函数内部,包括形参、局部参数。 enclosing function:内嵌函数。 global:函数所在模块。 builtin:内置函数。 闭包 什么是闭包 1、一个嵌套函数,分别有内函数,外函数。 2、内函数使用了外函数的变量。 3、外函数返回了内函数的应用地址。 4、那么这个嵌套函数就称为闭包。 闭包有什么意义 1、闭包返回的对象不仅仅是一个对象,而且还返回了这个函数的外层包裹的作用域。 2、无论这个函数在何处被调用,都优先使用其外层作用域。
|