自定义模块,time,datetime以及random
程序员文章站
2022-04-30 22:36:27
自定义模块,time,datetime以及random 1.自定义模块 2.time 3.datetime 4.random 5.其他 ......
自定义模块,time,datetime以及random
1.自定义模块
自定义一个模块 import #导入 (拿工具箱) 模块分类 1.内置模块(标准库) --python解释器自带的.py文件(模块) 2.第三方模块(大神写的) --需要额外下载的(www.pypi.org) 3.自定义模块(自己写的) --不需要额外下载 分模块的好处: 1.避免写重复代码 2.可以多次利用 3.拿来主义(拿来就用) 导入发生的事情: 1.在当前的名称空间开辟一个新的空间 2.将模块中所有的模块执行 3.通过模块名,进行查找函数(工具) 例: test.py: print("这是一个test") def func(): print("is func") return "hello" def foo(): print("is foo") name = "bye" 导入test.py import test print(test.name) print(test.func()) import test as t #起别名 print(t.name) 起别名: 1.可以将很长的模块名改成很短,方便使用 2.有利于代码的拓展和优化 test.py meet.py def func(): def func(): print("扳手") print("螺丝刀") msg= '''1.扳手 2.螺丝刀 >>>''' 提高兼容性: choose = input(msg) if choose == "1": import test as t: if choose == "2": import meet as t: t.func() from test import func func() import 和 from...import的区别 1.import 缺点:占用内存较大 优点:不会和当前文件定义的变量或者函数发生冲突 #import test name = "宝元" print(test.name) print(name) 2.from..import 缺点:会和当前文件定义的变量或者函数发生冲突 name = "宝元" from test import name print(name) #会覆盖本文件中定义的变量 解决办法: name = "宝元" from test import name as n print(name) print(n) 优点:占用内存比较小 from test import * #导入整个模块,会出现覆盖的现象,不能解决 #飘红不一定是报错 #可以在被导入的模块中顶部加入 __all__ = ["可以被导入的函数名和变量名"] 模块导入时的坑:被导入模块中导入模块,最后形成死环 模块的两种用法: 1.脚本(在cmd中执行 python test.py) 2.模块(不使用或者导入) from test import * if __name__ == '__main__': #测试接口 func() 在当前模块中使用__name__就是'__main__',if下面的代码会执行 当模块被导入的时候__name__就是被导入的模块名,if下面的代码不会执行 导入路径: 1.使用相对路径: from day15.t1(文件路径名) import meet print(meet.name) 2.使用绝对路径: from sys import path path.insert(0,"d:\\") import meet print(meet.name) 导入路径优先级:自定义>内置>第三方
2.time
time --时间模块 时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的 1.时间戳 import time print(time.time()) #时间戳 浮点数 print(time.time() + 500000) #时间戳加法 浮点数 time.sleep(3) #睡眠 秒 #时间戳表示的是格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量 2.格式化字符串时间 import time print(time.strftime("%y-%m-%d %h:%m:%s")) #2019-07-25 16:22:43 3.结构化时间 结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等) import time print(time.gmtime()) / time.localtime() #time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=8, tm_min=25, tm_sec=5, tm_wday=3, tm_yday=206, tm_isdst=0) print(time.gmtime()[0]) #2019 print(time.gmtime().tm_year) #2019 将时间戳转换成字符串时间 print(time.strftime("%y-%m-%d %h:%m:%s",time.gmtime(1564043412.2928293))) #2019-07-25 08:30:12 将字符串串时间转换成时间戳 print(time.mktime(time.strptime("2019-7-25 08:30:12","%y-%m-%d %h:%m:%s"))) #1564014612.0
3.datetime
from datetime import datetime,timedelta datetime --类型:对象(<class 'datetime.datetime'>) #获取当前时间 print(datetime.now()) #2019-07-25 16:36:57.212376 #时间相减 print(datetime(2020,5,20,13,14,00) - datetime(2019,5,20,13,14,00)) #366 days, 0:00:00 #将当前时间转化成时间戳 t = datetime.now() print(t.timestamp()) #1564044145.39519 #将时间戳转化成当前时间 import time print(datetime.fromtimestamp(1564044145.39519)) #2019-07-25 16:42:25.395190 #将字符串转成对象 print(datetime.strptime("2019-07-25 16:42:25","%y-%m-%d %h:%m:%s")) #2019-07-25 16:42:25 #将对象转换成字符串 1.print(str(datetime.now())) #2019-07-25 16:47:01.294579 2.print(datetime.now().strftime("%y-%m-%d %h:%m:%s")) #2019-07-25 16:47:01 #datetime加减 print(datetime.now() + timedelta(hours = 30 * 24 * 12)) #2020-07-19 16:49:06.174903 print(datetime.now() - timedelta(hours = 30 * 24 * 12)) #2018-07-30 16:49:33.403164 print(datetime.now() + timedelta(days = 1)) #2019-07-26 16:51:39.331657 print(datetime.now() - timedelta(days = 1)) #2019-07-24 16:52:26.509917
4.random
import random 随机小数 print(random.random()) #大于0且小于1的小数 print(random.uniform(1,3)) #大于1且小于3的小数 随机整数 print(random.randint(1,5)) #大于等于1且小于等于5之间的整数 print(random.randrange(1,10,2)) # 大于等于1且小于10之间的奇数 #randrange(起始,终止,步长) 随机选择一个返回 print(random.choice([1,'23',[4,5]])) 随机选择多个返回,会有重复 print(random.choices([1,2,3,4,5,],k=2)) 随机选择多个返回,不会出现重复,除非元素重复 print(random.sample([1,'23',[4,5]],k = 2)) 打乱列表顺序 lst = [1,2,3,4,5,6,7,8,9] random.shuffle(lst) print(lst) # [9, 8, 5, 3, 4, 1, 6, 7, 2]
5.其他
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 当前时区的名称 %% %号本身
推荐阅读
-
xadmin进行全局配置(修改模块名为中文以及其他自定义的操作步骤)
-
Python中time模块与datetime模块在使用中的不同之处
-
Python3.5内置模块之time与datetime模块用法实例分析
-
python_time和datetime模块
-
模块使用:time、datetime、calendar、sys、os、os.path、normcase和normapath、random、json、pickle
-
模块之 time datetime random
-
自定义模块,time,datetime以及random
-
Python时间模块datetime、time、calendar的使用方法
-
Python中的time、datetime、calendar模块(时间模块)
-
python 时间模块 time datetime calendar