包和模块笔记
-
模块的使用
-
什么是模块
python中一个py就是一个模块
-
怎么在一个模块中使用另一个模块的内容(包括:数据,函数,类等)
-
注意:
1.要在一个模块中使用另外一个模块中的内容,被使用的模块的模块名必须是标识符,不能是关键字
2.一个模块中的只有全局变量才能被其他模块使用(function也是全局变量)
3.其他模块只有在被导入以后才能使用
-
-
怎么导入
- import 模块名——可以通过 ‘模块名.变量’ 的方式使用被导入的模块中的所有的全局变量
- from 模块名 import 变量1, 变量2, ,…——导入指定模块中指定变量,导入后直接使用
- from 模块名 import *——导入指定模块中所有全局变量(星号—表示通配符)
- 重命名
- import 模块名 as 新模块名——给模块重命名,重命名后用数字来代替原模块名来使用
- from 模块名 import 变量1 as 新变量名1, 变量2, 变量3, …
-
导入模块原理
执行代码的时候,遇到import或者from-import导入模块的时候,系统会进入模块将代码全部执行一遍
-
重复导入
- python中import模块时会自动检测导入的模块是否已经到如果,如果重复导入就不需要重复导入(在任何位置需要任何模块的时候可以再次直接导入,不会有任何重复导入的负担)
-
阻止导入
-
通用语句格式
if name == ‘main’:
导入时不需要执行的代码
-
这个if语句中的代码在模块被直接运行的时候会运行,在被别的模块导入的时候不会执行
-
原理:每个模块中都有__main__这个属性,用来保存当前模块的模块名,name__的默认值是py文件文件名,当执行运行某个模块时,这个模块的__name__会自动变成__main,其他没有被执行的模块的__name__都是文件名
-
-
-
包的使用
-
什么是包
- 包就是包含__init__.py文件的文件夹。包是专门用来对模块进行封装的
-
包的使用(导入包中的模块,或者导入包中模块的内容)
import 包.模块 import 包.模块 as 新模块名 from 包 import 模块1, 模块2, ... from 包.模块 import 变量1, 变量2, ...
-
导入方式
# 导入方式1 import filemanager.excelFile filemanager.excelFile.read_file() # 导入方式2 import filemanager.excelFile as excelfile excelfile.read_file() # 导入方式3 from filemanager import excelFile, jsonFile excelFile.read_file() jsonFile.read_json_file() # 导入方式4 from filemanager.textFile import read_file, open_file read_file() open_file()
-
-
导入包中的原理
通过包导入模块或者模块内容的时候,系统会先执行包中__init__.py文件,然后再执行对应文件 import filemanager filemanager.close_file() from filemanager import close_file close_file() from filemanager import * close_file() read_file() open_file()
-
-
random(import random)
-
随机整数
-
random.randint(m, n)——产生m到n的随机整数(m和n都可以取到)
-
随机浮点数
# random.random()——产生0~1的随机小数:[0, 1) print(random.random()) print(random.random()*100) print(random.random()*80+20)
-
随机打乱列表中元素的顺序
# random.shuffle(列表) nums = [1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(nums) print(nums)
-
随机获取序列中元素
# random.choice(序列)——随机获取序列中的一个元素 # random.choices(序列, k=N)——随机获取序列中的N个元素 print(random.choice(nums)) print(random.choices(nums, k=5))
-
产生唯一文本信息
import uuid print(uuid.uuid1()) print(uuid.uuid4())
-
-
-
时间相关模块(import time、import datetime)
-
时间戳
时间戳是通过保存某个时间点到1970年0时0分0秒(格林威治时间)的时间差来保存时间(单位是秒)
保存时间戳比保存时间字符串更节约内存# time.time()——获取当前时间的时间戳 t1 = time.time() print(t1) #1620985858.5293105
-
当地当前时间
# time.localtime()——返回当地当前时间,返回的是结构体时间 # time.localtime(时间戳)——见时间转化成结构体时间 t3 = time.localtime() print(t3, t3.tm_mon, t3.tm_year)`# time.struct_time(tm_year=2021, tm_mon=5, tm_mday=14, tm_hour=17, tm_min=50, tm_sec=58, tm_wday=4, tm_yday=134, tm_isdst=0) 5 2021 t4 = time.localtime(0) print(t4) # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
-
睡眠指定时长(单位是秒)
time.sleep(N)——睡眠指定时长(单位是秒) print('=========') time.sleep(3) print('+++++++++')
from datetime import datetime, date, time, timedelta # timedelta——进行时间加减操作 # datetime——年月日时分秒格式 # date——年月日 # time——时分秒
-
获取当前日期和时间13550576202
# date.today()——今天日期 t2 = date.today() print(t2) print(t2.year, '年', t2.month, '月', t2.day, '日') # 2021 年 5 月 14 日
-
获取时间对应的时间戳
# datetime对象.timestamp()——获取时间对象对应的时间戳 t3 = t1.timestamp() print(t3) # 1620988069.434767
-
将字符串时间转换为时间对象
# datetime.strptime(时间字符串, 时间格式字符串) ''' %Y——年 %m——月 %d——日 %H——时(24小时制) %M——分 %S——秒 ''' t_str = '2021-05-14 16:51:47' t4 = datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S') print(t4) # 2021-05-14 16:51:47 print(t4.timestamp()) # 1620982307.0 t_str = '2021/5/14' t5 = datetime.strptime(t_str, '%Y/%m/%d') print(t5) # 2021-05-14 00:00:00
-
日期加减操作
# timedelta t_str = '2021-05-14 16:51:47' t6 = datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S') print(t6+timedelta(seconds=1)) #2021-05-14 16:51:48 print(t6+timedelta(days=1)) #2021-05-15 16:51:47 print(t6+timedelta(days=1, hours=1)) #2021-05-15 17:51:47 print(t6-timedelta(weeks=1)) #2021-05-07 16:51:47
-