python之自定义模块
python模块简述
python中的模块分为三种:
1.内置模块
2.第三方模块pypi
3.自定义模块
模块的好处又有哪些:
1.拿来就用
2.省去开发的时间
3.提升效率
4.结构化便于查找 便于修改 便于维护
先上两个硬菜import和from
摘自python学习手册, 用于记录。
客户端可以执行import或from语句。如果模块还没有加载,这两个语句会去搜索、编译以及执行模块文件程序。主要差别在于,import会读取整个模块,所以必须进行定义后才能读取它的变量名;from将获取(或者是复制)模块特定的变量名。
import使一个变量名引用整个模块对象,因此必须通过模块名称来得到该模块的属性(例如,module1.printer)。而from会把变量名复制到另一个作用域,所以它就可以直接在脚本中使用复制后的变量名,而不用通过模块(例如,printer)。
from语句有破坏命名空间的潜质。如果使用from导入变量,而那些变量碰巧和作用域中现有变量重名,变量就会被悄悄的覆盖掉。使用import语句时就不存在这种问题,因为必须通过模块名才能获取其内容。不过,使用from时,只要你了解并预料到可能发生这种事,在实际情况下这就不是一个大问题了,尤其是当你明确列出导入变量名时(例如,from module import x, y, z)。
另一方面,和reload调用同时使用时,from语句有比较严重的问题,因为导入的变量名可能引用之前版本的对象。再者,from module import *形式的确可能破坏命名空间,让变量名难以理解,尤其是在导入一个以上的文件时。
比较务实的建议是:简单的模块一般倾向于使用import,而不是from。多数的from语句是用于明确列举想要的变量,而且限制在每个文件中只用一次from *形式。这样一来,任何无定义的变量名都可以认为是存在于from *所引用的模块内。当你必须使用两个不同模块内定义的相同变量名变量时,才真的必须使用import,这种情况下不能使用from。
1 #meet1文件 2 name = '111' 3 foo = '被调用' 4 print(name)
1 #meet文件 2 from meet import foo 3 print(foo)
为模块起别名
别名其实就是一个绰号,好处可以将很长的模块名改成很短,方便使用.
import meet.py as t t.read1()
py文件的两种功能
#编写好的一个python文件可以有两种用途: 一:脚本,一个文件就是整个程序,用来被执行 二:模块,文件中存放着一堆功能,用来被导入使用 #python为我们内置了全局变量__name__, 当文件被当做脚本执行时:__name__ 等于'__main__' 当文件被当做模块导入时:__name__等于模块名 #作用:用来控制.py文件在不同的应用场景下执行不同的逻辑(或者是在模块文件中测试代码) if __name__ == '__main__':
time(时间)模块
#常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行。单位为秒。 2.time.time() 获取当前时间戳
在计算中时间共有三种方式:
1.时间戳: 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型
2.格式化字符串时间: 格式化的时间字符串(Format String): ‘1999-12-06’
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 当前时区的名称 %% %号本身
3.结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
import time #导入时间模块 print(time.time()) #获取时间戳 #结果:1547559686.0308368 import time print(time.strftime('%Y-%m-%d %X')) #strftime时间字符串 #结果: 2019-01-15 21:43:55 import time print(time.localtime()) # localtime将一个时间戳转换为当前时区的struct_time #结果: time.struct_time(tm_year=2019, tm_mon=1, tm_mday=15, tm_hour=21, tm_min=55, tm_sec=8, tm_wday=1, tm_yday=15, tm_isdst=0)
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
时间格式转换:
时间转换
import time print(time.time()) #结果:1547560737.4594467 #把时间戳转换成结构化时间 print(time.gmtime())#英国伦敦的时间 print(time.localtime())#本地计算机时间 localtim #结果: # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=15, tm_hour=13, tm_min=58, tm_sec=57, tm_wday=1, tm_yday=15, tm_isdst=0) # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=15, tm_hour=21, tm_min=58, tm_sec=57, tm_wday=1, tm_yday=15, tm_isdst=0) #把时间戳转换成字符串时间 print(time.strftime('%Y-%M-%d %H:%M:%S',time.localtime())) #首先转换成结构化时间,然后在转换成字符串
datetime
注意:datetime
是模块,datetime
模块还包含一个datetime的
类,通过from datetime import datetime
导入的才是datetime
这个类。
如果仅导入import datetime
,则必须引用全名datetime.datetime
。
datetime.now()
返回当前日期和时间,其类型是datetime
。
datetime 时间转换
1 from datetime import datetime 2 print(datetime.now()) #获取当前时间以字符串的形式 3 # 结果: 2019-01-15 23:14:29.983605 4 5 f= datetime.now() 6 print(datetime.timestamp(f))#获取时间戳 7 #结果:1547565430.828462 8 9 10 11 print(datetime.fromtimestamp(1547565430.828462))#将时间戳转换成字符串 12 #结果:2019-01-15 23:17:10.828462 13 14 import time 15 print(datetime.fromtimestamp(time.time()))#将时间戳转换成字符串 16 #结果:2019-01-15 23:20:00.840059
#把字符串转换成一个时间的对象
print(datetime.strptime('2019-01-15 13:14:22','%Y-%m-%d %H:%M:%S' ))
#%把一个时间类型转换成字符串
datetime.now()
print(datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S'))
from datetime import datetime, timedelta
print(datetime.now()+timedelta(days=1,hours=1)) #给时间做加法