栈
在python中,可以使用列表来模仿栈
特点:先进后出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上
入栈:
mystack = []
mystack.append(1)
出栈:
mystack.pop()
队列
与栈不同,它的特点是先进先出[可以抽象成一个平放的水管]
import collections #导入数据结构的集合
queue = collections.deque([1, 2, 3, 4, 5])
print(queue)
入队:[存数据]
queue.append(6)
print(queue)
出队:[取数据]
queue.popleft()
模块
定义:在python中一个.py文件就是一个模块
模块划分:
内置模块:无须自己定义,无须安装,可以直接导入使用的模块,我们称之为内置模块
自定义模块:需要自己定义py文件
第三方模块:无须自己定义,但是需要安装的模块,我们称之为第三方模块。
模块优点:
1.提高代码的可维护性
2.提高代码的复用性
3.可以引入其他模块
4.可以避免函数名以及变量名的冲突
模块的导入 【整体导入】
import 模块名
import 模块名 as 别名
函数的调用以及变量的使用:
别名.函数名(参数列表)
别名.变量
import cv2 as cv
模块的导入【局部引入】
from 模块名 import 函数名,类名,变量名
使用此方式引入:
引用函数以及变量的时候语法:
函数名(参数列表)
变量名
注意:
使用这种方式导入,优点方便函数的调用,缺点可能会引起函数名的冲突
【因此使用此方式导入在给函数以及变量命名的时候要注意不要出现重名】
from matplotlib import pyplot
模块导入之*
from 模块名 import *
*:代表导入模块中所有函数以及变量
函数的引用
函数名(参数列表)
变量名
注意:一般情况下,不建议使用【特别容易造成函数名变量名的冲突】
from matplotlib import *
name属性
每个模块【.py文件】都有一个内置变量__name__,当程序在当前模块执行的时候__name__的值等于__main__,当当前模块被其他模块引入的是它的等于该模块的模块名。一般情况下,我们会使用if name == “main”:来作为程序的入口。
if __name__ == '__main__':
#代码从这里开始阅读
pass
包
为了解决模块名的冲突,python引入目录来组织模块的方法,我们称之为包。
每个包目录下都会包含一个__init__.py文件,这个文件必须存在,若不存在python会将其当成一个普通目录,而不是一个包__init__.py文件可以是一个空文件也可以有内容。
注意:
自定义模块的时候,需要注意不能跟python自带的模块名冲突
自定义模块取名的时候,可以使用多个单词拼接的方式来取名