模块初始与time、datetime及random
模块初始与time、datetime及random模块初始模块的概念(本质为一个py文件)python模块可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织 的代码段就是模块,模块在物理形式上表现为以.py结尾的代码文件 一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件 模块的文件名就是模块的名字加上扩展名.py 每个模块都有自己的名称空间 python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统 python中,模块也是对象 在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性 模块的分类分为三部分:内置模块、第三方模块,自定义模块 模块的好处分模块的好处:
模块的导入(imort)import time,os # 单行导入 import time #多行导入(推介写法) import os 模块导入发生的事情
模块的别名import time as t #将time命名为t t.strftime() # t.可直接调用函数方法 # 做一兼容性 choose = input(msg) if choose == "1": import meet as t elif choose == "2": import test as t from datetime import datetime as t from import 也支持重新命名 for import导入模块中的某些方法: from datetime import datetime # 导入模块中的某种方法 form import和import的区别: 唯一的区别就是:使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了 from...import...的方式有好处也有坏处
form import执行文件与模块同名的变量,会有覆盖效果 from import as *from import as *导入模块中未限制的所有方法 可以使用__all__进行限制 __all__=['name','read1'] #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字 模块的导入顺序内存中已经加载的模块 > 自定义模块 > 内置模块 > 第三方模块
# 导入路径: # 使用相对路径: from day15.t1 import meet # day15.t1 meet相对路径 print(meet.name) # 使用绝对路径: # 错误示例: # from r"D:" import meet # from ../ # 正确的绝对路径: from sys import path path.insert(0,"D:") # 将导入模块的绝对路径插入系统路径中 import meet print(meet.name) 模块的两种用法:
time模块time模块方法及用法import time print(time.time()) # 当前时间,浮点数 time.sleep(2) # 休眠2秒,本质为阻塞 time.strftime("%Y-%m-%d %H:%M:%S",结构化时间) # 将结构化时间转化成字符串时间 time.gmtime(时间戳) # 将时间戳转化成格林尼治结构化时间 time.mktime(结构化时间) # 将结构化时间转化时间戳 time.strptime(字符串时间,"%Y-%m-%d %H:%M:%S") # 将字符串时间转换成结构化时间 time.localtime() # 将时间戳转化成当地的结构化时间 python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身 time模块计算两个时间的时间差: 计算时间差: import time true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S')) dif_time=time_now-true_time struct_time=time.gmtime(dif_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec)) 其他方法: #结构化时间 --> %a %b %d %H:%M:%S %Y串 #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 >>>time.asctime(time.localtime(1500000000)) 'Fri Jul 14 10:40:00 2017' >>>time.asctime() 'Fri Jul 26 18:34:59 2019' #时间戳 --> %a %b %d %H:%M:%S %Y串 #time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串 >>>time.ctime() 'Fri Jul 26 18:34:59 2019' >>>time.ctime(1500000000) 'Fri Jul 14 10:40:00 2017' datetime模块获取当前日期和时间: from datetime import datetime print(datetime.now()) # 获取对象数据类型为对象 # 结果: '2019-07-26 18:39:46.300129' 获取指定的时间和日期: from datetime import datetime dt = datetime(2018,5,20,13,14) print(dt) # 结果: '2018-05-20 13:14:00' datetime与时间戳的转换: from datetime import datetime dt = datetime.now() new_timestamp = dt.timestamp() # 转化成时间戳 print(new_timestamp) #结果:1543931750.415896 import time from datetime import datetime new_timestamp = time.time() print(datetime.fromtimestamp(new_timestamp)) # 转化成datetime时间 # 结果: '2019-07-26 18:46:13.833992' str与datetime的转换: 很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过 from datetime import datetime t = datetime.strptime('2018-4-1 00:00','%Y-%m-%d %H:%M') print(t) ''' 结果: 2018-04-01 00:00:00 ''' # 如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过`strftime()`实现的,同样# 需要一个日期和时间的格式化字符串: ``` from datetime import datetime now = datetime.now() print(now.strftime('%a,%b %d %H:%M')) # 结果: 'Mon,May 05 16:28' datetime加减: 对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用 from datetime import datetime,timedelta now = datetime.now() now datetime.datetime(2015,18,16,57,3,540997) now + timedelta(hours=10) datetime.datetime(2015,19,2,540997) now - timedelta(days=1) datetime.datetime(2015,17,540997) now + timedelta(days=2,hours=12) datetime.datetime(2015,21,4,540997) 可见,使用 指定datetime时间: current_time = datetime.datetime.now() print(current_time.replace(year=1977)) # 直接调整到1977年 print(current_time.replace(month=1)) # 直接调整到1月份 print(current_time.replace(year=1989,month=4,day=25)) # 1989-04-25 18:49:05.898601 random模块print(random.random()) # 0 ~ 1 print(random.uniform(1,10)) # 1 ~ 10 print(random.randint(1,50)) # 1 ~ 50(闭区间) print(random.randrange(1,2)) # randrange(起始,终止,步长) print(random.choice([1,])) # 选择一个元素 print(random.choices([1,],k=2)) # 选择两个元素,会有重复 print(random.sample((1,5),k=2)) # 选择两个元素,不会有重复(除非只有两个) lst = [1,6,7,8,9,0] random.shuffle(lst) # 顺序打乱 print(lst) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |