一、模块:
Python中的模块,就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包好可执行的代码。
文件名就是模块名加上后缀.py,在模块内部,模块名存储在全局变量__name__中,是一个string,可以直接在模块中通过__name__引用到模块名。
模块分为三类:
-- 自定义模块
-- 内置模块
-- 第三方模块
导入模块:
-- import:使导入者以一个整体获取一个模块
-- from:使导入者从一个模块文件中获取特定的变量名
-- reload:在不终止Python程序的情况下,提供了一个重新载入模块文件代码的方法
导入模块的方法:
1 import module # 会先把module执行一遍(如果里边有可执行程序) 2 from module.xxx.xxx import xx 3 from module.xxx.xxx import xx as rename 4 from module.xxx.xxx import * # 不推荐使用,因为里边可能有一些代码,跟执行文件里自定义的可执行代码重复,导致覆盖 5 6 7 正确的调用方式: 8 9 import cal #当前目录直接调用模块 10 11 from my_module import cal # 二层目录调用 12 13 from web1.web2.web3 import cal # 多层目录调用 14 15 from web1.web2.web3.cal import add # 只调用某个方法 16 17 18 19 注意:不支持的调用方式 (调用包就是执行包下的__init__.py文件) 20 from web1.web2 import web3 #这样是执行web3的__init__文件,唯一不支持的调用方式 21 print(web3.cal.add(2,6))
获取模块的路径:
1 import sys 2 print(sys.path) 3 4 添加路径: 5 6 import sys 7 import os 8 # project_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 9 # sys.path.append(project_path) 10 print(os.path.abspath(__file__)) # 是获取的文件名,路径是pycharm加上的 11 print(os.path.dirname(os.path.abspath(__file__))) # 获取文件的路径 12 print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #获取上一层目录
第三方模块:
1 #先安装 gcc 编译和 python 开发环境 2 yum install gcc 3 yum install python-devel 4 或 5 apt-get python-dev 6 7 #安装方式(安装成功后,模块会自动安装到 sys.path 中的某个目录中) 8 yum 9 pip 10 apt-get 11 ... 12 #进入python环境,导入模块检查是否安装成功
二、包(package)
如果不同的人编写的代码模块名相同怎么办?为了避免冲突,Python引入了按目录来组织模块的方法,称为包。
如图所示,两个cal.py冲突了,但是功能不同,所以给两个模块选择一个顶层包(不能重名),在调用就不会冲突了。
--注--:
请注意:每个包目录下来都会有一个__init__.py的文件,这个文件必须是存在的,否则,Python就不把这个目录当成普通目录,而不是一个包,__init__.py可以是空文件,也可以有python代码,__init__.py本身就是一个文件,它的模块名就是对应的包名,它一般由于做接口文件。
调用包就是执行包下的__init__.py文件
三、time模块
1 时间有三种表达方式:
2
3 时间戳: unix元年到现在------>time.time()
4 格式化的字符串:如:2016-12-12 10:10------->time.strftime(‘%Y-%m-%d‘)
5 结构化时间:元组 ------>time.struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) 即:time.localtime()
1 import time 2 3 # 1、时间戳 4 print(time.time()) 5 6 # 2、localtime() 7 print(time.localtime()) # 空参 8 ##time.struct_time(tm_year=2016, tm_mon=9, tm_mday=11, tm_hour=0, tm_min=38, tm_sec=39, tm_wday=6, tm_yday=255, tm_isdst=0) 9 10 print(time.localtime(1422222222)) # 指定时间戳 11 12 # 3、gmtime() 13 print(time.gmtime()) # gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。 14 15 16 # 4、mktime() 17 print(time.mktime(time.loacltime())) #将结构化时间转换为时间戳 18 19 # 5、asctime() 20 print(time.asctime()) # 将结构化时间转变为:‘Sun Jun 20 23:21:05 1993‘ 21 默认参数是time.localtime() 22 23 # 6、ctime() 24 print(timectime()) #将时间戳转化为:‘Sun Jun 20 23:21:05 1993‘ 25 默认参数是time.time() 26 27 # 7、strftime() 28 print(time.strftime(format[,t])) #结构化时间转化为 字符串时间 29 默认参数time.localtime() 30 print(time.strftime(‘%Y-%m-%d %X‘,time.localtime())) # 2018-03-26 19:11:36 31 32 # 8、strptime() 33 print(time.strptime())# 字符串时间转化为结构化时间 34 print(time.strptime(‘2016:12:23:17:20:20‘,‘%Y:%m:%d:%X‘)) # time.struct_time(tm_year=2016, tm_mon=12, tm_mday=23, tm_hour=17, tm_min=20, tm_sec=20, tm_wday=4, tm_yday=358, tm_isdst=-1) 35 36 # 9、sleep() 37 38 # 10、clock() 39 这个需要注意,在不同的系统上含义不同。 40 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。 41 而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间,即两次时间差
记住如下图即可:
---注---
1 import datetime 2 print(datetime.datetime.now()) 3 ##2018-03-27 17:47:07.211182
四、random模块
随机数模块:
1 import random 2 3 print(random.random()) #用于生成一个0到1的随机符点数: 0 <= n < 1.0 4 print(random.randint(1,2)) #用于生成一个指定范围内的整数 [1,2] 5 print(random.randrange(1,10)) #从指定范围内,按指定基数递增的集合中获取一个随机数 [1,10) 6 print(random.uniform(1,10)) #用于生成一个指定范围内的随机符点数 9.49909962942907
7 print(random.choice(‘nick‘)) #从序列中获取一个随机元素 c 8 li = [‘nick‘,‘jenny‘,‘car‘,] 9 random.shuffle(li) #用于将一个列表中的元素打乱 10 print(li) 11 li_new = random.sample(li,2) #从指定序列中随机获取指定长度的片断(从li中随机获取2个元素,作为一个片断返回) 12 print(li_new)