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))  #给时间做加法
 

 

posted @ 2019-01-15 17:49  Tiamo_W  阅读(729)  评论(0编辑  收藏  举报