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、装饰器的作用是,在不改变原有函数的调用方式下,增加代码的功能。

原文地址:https://www.cnblogs.com/AYxing/p/8934383.html