闭包 

如果内层函数引用了外层函数的变量或参数,并且外层函数返回内层函数名

装饰器

本质是函数,可以让其他函数在不做任何代码修改的前提下增加额外功能,生产场景例如 插入日志 权限校验、1套用任何函数增加一个输出函数执行总时间的功能

模块

模块是一个保存了python代码的文件,其中可以包含变量函数或类的定义,或其他语句。一个模块中可以使用其他模块的变量、函数、类等。                 

内置标准模块、自定义模块、第三方模块

from 模块名  import  导入对象名   as  别名

__name__属性 存在于每个文件中,本身是【if __name__ == '__main__':】属性值是模块文件的主名,当被其他程序导入使用时,这里边的代码不执行


  包

python程序由包、模块、函数组成。

包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合

自定义的包和模块安装在目录下的lib子目录中。

包是一个至少包含__init__.py文件 一般用来进行包的某些初始化工作或者设置__all__值,其内容可为空

面向对象&面向过程

对象

化为两部分,静态与动态,静态部分被称为属性,任何对象都会具备其自身属性,一个人有年龄 性别等,动态部分属于行为,具有这些人会被执行什么动作例如跳 转等

程序中将实体抽象为对象,考虑对象具备的属性和行为

将这些属性和行为封装起来以描述这类人。

类 实质是封装对象属性和行为的载体,而对象是则是类抽象出来的一个实例

类的所有实例方法都必须至少有一个名为self的参数,必须是第一个形参,self参数代表将来要创建的对象本身

在类的实例方法中访问实例属性需加前缀self

class Person:
addr = 'beijing' # 定义类时 还可定义类属性
def people(self,name): # 实例方法
self.name=name # 实例属性
print(self.name)
p1 = Person() # 创建实例对象
p1.people('wang')
print(s1.name)
对象

分为类对象和实例对象,类对象只有一个,实例对象可多个

类对象是执行class语句创建的

实例对象通过调用类对象来创建,每个实例对象继承类对象的属性,并获得自己命名空间,

实例方法的第一个参数默认self 表示引用实例对象,在实例方法中对self的属性赋值才会创建属于实例对象的属性,如上

构造方法

构造方法一般用来为实例属性设置初始值或进行其他必要的初始化操作,在创建实例对象时被自动调用和执行

定义一个构造方法  __init__

class Person:                 
def __init__(self): # 构造方法
print('调用构造方法')
self.school = 'edu'
def people(self): # 实例方法
print(self.school)
s1 = Person() # 创建实例对象
s1.people()

析构方法

一般用来释放对象占用的资源,在删除时自动调用执行

class Student:
def __init__(self,name): # 构造方法
self.name = name
print('初始化',self.name)
def __del__(self): # 析构方法
print('释放资源',self.name)
s1 = Student('wang')
类方法

类所有用的方法,通过装饰器classmethod在类中定义,cls表示类本身

class 类名:
@classmethod
def 类方法名(cls)
方法体
静态方法
class  Person():
@staticmethod
def 静态方法名(): # 类似 但可以无参数
函数体


面向对象的三大特征

封装  继承  多态

封装

核心,将对象的属性和行为封装起来,其载体就是类

私有属性 属性前加下划线表示  self.__name 不可随意修改,通过指定命令

继承

特殊类 一般类-父类或基类-----后边才有object

class  基类名(object):
类体
class 派生类名(基类名):
类体

单一继承   多重继承

多态

不同的人对同一事件产生了不同的行为,程序中是指同一种行为对应着多种不同的实现。

多态是指基类的同一个方法在不同派生类对象中具有不同的表现和行为