内置模块
模块:计算机在开发过程中,代码越写越多,也就也来越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里。在python里,一个.py文件就是一个模块。模块的优点:提高代码的可维护性。提高代码的复用,当模块完成时就可以在其他代码中调用。引用其他模块,包含python内置模块和其他第三方模块避免函数名和变量名等名称冲突。
import 语句:格式:import module1[, module2]注意:一个模块只会被导入一次,不管执行了多少次import,防止一次次的导入内存中浪费内存使用模块中的内容: module.方法/变量/类from …… import…… 作用:从模块中导入一个指定的部分 格式: from modulename import name… from …… import *作用:从模块中所有内容全部导入当前命名空间 注意:不应该过多的使用,占用内存太多了。容易导致变量的冲突
包:为了避免模块名的冲突,python又引入了按目录来组织模块的方方 称为包(package)特点:引入包以后,值顶层的包名不予别人冲突,那么所有的模块都不会与比人冲突注意:每个包下面都会有一个名为__init__.py的文件,可以导出包里的内容from 包 import (可以是方法名字 只不过需要有init文件 也可以是模块的名字)如果包里面的模块相同了from 包.模块 import 方法如果方法也相同了from 包.模块 import 方法 as 变量 # 给其重新命名 之后再去操作。
datetime模块比time高级了不少,可以理解为 datetime 基于time进行了封装,提供了更实用的函数接口datetime模块的接口更直观,更容易调用。模块中的类:datetime 同时有时间和日期timedelta 主要用于计算时间跨度tzinfo 时区相关time 只关注时间date 只关注日期获取当前时间t1 = datetime.datetime.now() 获取指定时间t2 = datetime.datetime(199, 10, 1, 8, 8, 8, 0)将时间转为字符串t3 = t1.strftime("%Y-%m-%d %X")将格式化字符串转为datetime对象t4 = datetime.datetime.strptime(t3, “%Y-%m-%d %X”)时间相减,返回一个时间间隔t5 = datetime.datetime(199, 10, 1, 8, 8, 8, 0)t6 = datetime.datetime(199, 10, 2, 8, 8, 8, 0)t7 = t6 -t5 天数和时间都告诉了 t7.days 间隔天数 t7.second 出去天数的秒数日历模块 calendarcalendar.month(2018,8)返回某年某月calendar.calendar(2018) 返回某一年的calendar.isleap()判断是否是闰年calendar.monthrange(2018,8)返回某个月的weekday的第一天开始星期和这个月的所有天数calendar.monthcalendar(2018,8)返回的是这个月的序列 没有的就是0
uuid模块:是一个128位的字节的全局唯一标识符,通常由32字节的字母穿表示,它可以保证时间和空间的唯一性,也称为GUID原理:通过MAC地址、时间戳、命名空间、随机数、伪随机数保证生成的ID的唯一性。作用:随机生成字符串,当成token使用,当成订单号使用(要求不相同的字符串)算法:1、uuid1():基于时间戳的算法由MAC地址、当前时间戳、随机数组成,可以保证全球范围没的唯一性,但是由于MAC地址的使用时带来的安全问题,局域网可以使用IP来代替MAC2.、uuid2():基于分布式计算环境DCE的算法算法和uuid1相同,但是不用的是把时间戳的前四位换为POSIX的UID,实际当中很少使用,在python中没有这个函数。3、uuid3():基于名字和MD5散列值的算法通过计算名字和命名空间的MD4散列值得到的,保证了同一命名空间中不同名字的唯一性和不同命名空间的唯一性。但同一命名空间的相同名字生成相同的UUID4、uuid4():基于随机数的算法由伪随机数得到的,有一定的重复概率,概率是可以计算出来的但是几率太小。5、uuid5():基于名字和SAH1散列值的算法算法和uuid3相同,不同的是使用SHA1算法