模块分为三种:1,python标准库(内置模块)。 2,第三方模块 3,应用程序自定义模块
-自定义模块
import
用import时会先把文件中的命令都执行一边,然后执行需要执行的函数命令。
-执行对应文件
-引入变量名
-import 运行时只能找到当前操作执行文件所在目录
例如:在同一个目录(同级目录)下新建一个test.py 和cal.py文件 cal.py内容如下,需要在test.py文件中引入cal.py函数并运用
def add(x,y):
return x+y
def sub(x,y):
return x-y
代码如下:
-代码1:
import cal
print(cal.add(5,3))======>结果是:8
print(cal.sub(5,3))======》结果是:2
-代码2:
from cal import add,sub
print(add(5,3))=====》结果是:8
print(sub(5,3))=====〉结果是:2
例如:*在不同目录下新建一个test.py 和cal.py文件 cal.py内容如下,需要在test.py文件中引入cal.py函数并运用
test.py文件在 day21 lessons文件下而cal.py在 day21 lessons-new-cal.py
def add(x,y):
return x+y
def sub(x,y):
return x-y
代码是:
from new import cal
print(cal.add(5,3))====>结果是8
*不同目录下 例如:new 目录下有2个包(web1, my_module) new--web1--test.py new--my_module-cal.py-功能
现在想在test.py中调用cal.py中的一个功能
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#代码中的os.path.abdpath(__file__) 代表当前文件的绝对路径
#代码中的os.path.dirname()代表上一级路径
sys.path.append(BASE_DIR)
from my_module import cal
if __name__=='__main__':
print(cal.add(3,5))===》结果是8
*********************************************
目录 new包下有一个执行文件test.py 以及一个web1 包(web1-web2-web3-cal.py) ,需要在test.py 中运行web3包中的cal.py文件
cal.py 文件内容是:
def add(x,y):
print(x+y)
代码如下:
-代码1
from web1.web2.web3 import cal
cal.add(3,5)===》结果是8
-代码2
from web1.web2.web3.cal import add
add(3,5)====结果是8
不可用代码:
from web1.web2 import web3=====》此代码相当于执行web3 包中的_init_.py
web3.cal.add() 代码会报错
if __name__ == '__main__' :下边写的执行代码是对上边所写代码进行测试。若别的文件引用此代码所在的文件中的功能,—__name__ 等于sys.path的执行结果,所以下边代码不会运行
if __name__ == '__main__':
main run======>此代码代表程序
-python标准库模块
1,time 模块
-time.sleep() 延迟时间
-时间戳 time.time() :做计算
import time
print(time.time())====>1620632052.788367. 代表从1970年到现在一共多少秒
-结构化时间:
time.localtime()--当地时间
print(time.localtime())=====>time.struct_time(tm_year=2021, tm_mon=5, tm_mday=10, tm_hour=15, tm_min=38, tm_sec=23, tm_wday=0, tm_yday=130, tm_isdst=0)
t=time.localtime()
print(t.tm_year)====>结果是:2021 代码意思是:打印年份
time.gmtime()---世界标准时间
print(time.gmtime())====time.struct_time(tm_year=2021, tm_mon=5, tm_mday=10, tm_hour=7, tm_min=47, tm_sec=49, tm_wday=0, tm_yday=130, tm_isdst=0)
-将结构化时间转换成时间戳 time.mktime()
print(time.mktime(time.localtime()))=====>1620633262.0
- 将结构化时间转换为格式化的字符串时间 代码:time.strftime(x,t) x代表格式化的字符串时间 ,t 默认 time.localtime()
%Y代表年。
%m代表月
%d代表日
%X代表时分秒
print(time.strftime('%Y-%m-%d %X'))====>2021-05-10 16:01:28
- 将格式化的字符串时间 转换成 结构化时间代码:time.strptime()
print(time.strptime('2012:5:10:12:30:05','%Y:%m:%d:%X'))==>time.struct_time(tm_year=2012, tm_mon=5, tm_mday=10, tm_hour=12, tm_min=30, tm_sec=5, tm_wday=3, tm_yday=131, tm_isdst=-1)
-asctime 是将结构化时间转换为字符串时间 有固定格式
import time
print(time.asctime())===>Mon May 10 16:19:14 2021
-ctime 是将时间戳转化为字符串时间 有固定格式
import time
print(time.ctime())====>Mon May 10 16:19:14 2021
-datetime
import datetime
print(datetime.datetime.now())=====>2021-05-10 16:23:25.260349
2,random 模块 随机模块
-random.random() 0-1范围内 浮点类型
import random
print(random.random())====0.9317954898962848
-random.ranint(1,3) #[1,3] 整型 范围是大于等于1,小于等于3整数
print(random.randint(1,3))==结构是1-3内随机数字
-random.randrange(1,3) #[1,3) 范围是:大于等于1,小于3的整数
print(random.randrange(1,3))
-random.choice() 随机选取其中一个元素
print(random.choice([11,22,33]))===》结果是随机出现列表中随机元素
-random.sample(x,y) x代表可迭代对象,y 代表一次出现几个元素
import random
print(random.sample([11,22,33],1))==》[22] 出现一个元素
import random
print(random.sample([11,22,33],2))===》[11,33]出现2个元素
-random.uniform() 任意范围内的浮点型
import random
print(random.uniform(1,3))====此代码是表示随机取1-3范围内的浮点型
-random.shuffle() 改变可迭代对象元素顺序
import random
ret = [1,2,5,6]
random.shuffle(ret)
print(ret)===》[5, 1, 2, 6]
随机验证码 代码如下:
import random
def v_code():
ret = ''
for i in range(5):=====此处代表范围是0,1,2,3,4 即[0,5)
num = random.randint(0,9)
alf = chr(random.randint(65,122))
s =str(random.choice([num,alf]))
ret += s
return ret
print(v_code())====》结果是个5位数的随机码
临时修改系统环境变量,代码如下:
import sys
sys.path.append()
3,sys 模块
4,json &pickle 模块
5,os 模块
-os.getcwd 直接获取当前工作目录
import os
print(os.getcwd())=====>结果是:/Users/chen/PycharmProjects/学习/com/wang
-os.chdir()改变当前目录. os.chdir(.) 当前目录
-os.chdir(‘..‘) 返回上一层
-os.makedirs('dirname1/dirname2')可
-remove
* logging 模块
*re 模块