设为首页 收藏本站
查看: 1209|回复: 0

[经验分享] Python模块 datetime-DreamScape

[复制链接]

尚未签到

发表于 2018-8-10 09:13:51 | 显示全部楼层 |阅读模式
  Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。
  导入模块
  在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name 理解为名字限定符。模块名就是文件名去掉.py后缀。导入模块的方式有如下几种:
  1). import PackageA.SubPackageA.ModuleA            #使用时必须用全路径名
  2). from PackageA.SubPackageA import ModuleA         #以直接使用模块名而不用加上包前缀。
  3). from PackageA.SubPackageA.ModuleA import functionA    #直接导入模块中的函数或变量
  (1)当使用import item.subitem.subsubitem语法时,最后一个item之前的item必须是包,最后一个item可以是一个模块或包,但不能是类、函数和变量;
  (2)当使用from package import item时,item可以是package的子模块或子包,或是其他的定义在包中的名字(比如一个函数、类或变量);首先检查item是否定义在包中,不过没找到,就认为item是一个模块并尝试加载它,失败时会抛出一个ImportError异常。
  (3)当使用from pacakge import *时,如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。如果没有定义__all__, 这条语句不会导入所有的package的子模块,它只保证包package被导入,然后导入定义在包中的所有名字。包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。
  下面就通过Pycharm先建立一个目录modules,再建立一个python包main,最后创建一个client..py的文件。创建包文件main时工具会自动创建一个___init__.py的python文件,简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py用于标识当前文件夹是一个包。
__init__.py  if __name__ == '__main__':
  pass
  def hello():
  print 'hello,this is a test file'
  def name():
  print __name__
  def sum(a,b):
  print a+b
  def Max(li):
  li.sort()
  print 'Max is %d' %li[-1]
  client.py
  print '*****import module1[, module2[,... moduleN]*****'
  import __init__
  __init__.hello()
  print '*****from modname import name1[, name2[, ... nameN]]*****'
  from __init__ import hello
  hello()
  print '#####from modname import *#####'
  from __init__ import *
  name()
  sum(1,2)
  Max(li=[12,23,32,1,4,6])
  运行结果:
  *****import module1[, module2[,... moduleN]*****
  hello,this is a test file
  *****from modname import name1[, name2[, ... nameN]]*****
  hello,this is a test file
  #####from modname import *#####
  __init__
  3
  Max is 32
  当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

  •   1、当前目录
  •   2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  •   3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
  模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
  不用import就可以直接使用的常用内置函数:
help(obj) 在线帮助, obj可是任何类型callable(obj)  查看一个obj是不是可以像函数一样调用 repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝  eval_r(str) 表示合法的python表达式,返回这个表达式  dir(obj)     查看obj的name space中可见的namehasattr(obj,name) 查看一个obj的name space中是否有name    getattr(obj,name) 得到一个obj的name space中的一个name  setattr(obj,name,value) 为一个obj的name   space其中的一个name指向vale这个object    delattr(obj,name) 从obj的name space中删除一个namevars(obj) 返回一个object的name space。用dictionary表示delattr(obj,name) 从obj的name space中删除一个name globals() 返回一个全局name space,用dictionary表示type(obj)  查看一个obj的类型   isinstance(obj,cls) 查看obj是不是cls的instance    issubclass(subcls,supcls) 查看subcls是不是supcls的子类  ##################    类型转换  ##################
  chr(i) 把一个ASCII数值,变成字符
  ord(i) 把一个字符或者unicode字符,变成ASCII数值
  oct(x) 把整数x变成八进制表示的字符串
  hex(x) 把整数x变成十六进制表示的字符串
  str(obj) 得到obj的字符串描述
  list(seq) 把一个sequence转换成一个list
  tuple(seq) 把一个sequence转换成一个tuple
  dict(),dict(list) 转换成一个dictionary
  int(x) 转换成一个integer
  long(x) 转换成一个long interger
  float(x) 转换成一个浮点数
  complex(x) 转换成复数
  max(...) 求最大值
  min(...) 求最小值
  日期时间模块datetime
  datetime是Python处理日期和时间的标准库。
import datetime  _now=datetime.datetime.now()
  print _now
  print type(_now)
  from datetime import datetime
  now=datetime.now()
  print now
  print type(now)
  运行结果:
2017-11-09 17:29:04.976000  <type 'datetime.datetime'>
  2017-11-09 17:29:04.976000
  <type 'datetime.datetime'>
  从程序中可以看出datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。如果仅导入import datetime,则必须引用全名datetime.datetime。datetime.now()返回当前日期和时间,其类型是datetime。
  python 中 time 有三种格式:float,struct tuple(time.struct_time 或 datetime.datetime),str
from datetime import datetime  import time
  print '#####timestamp时间戳#####'
  t1=time.time()
  print t1
  print type(t1)
  print '#####time tuple时间元组#####'
  t2=time.localtime()
  print type(t2)
  print '#####string字符串#####'
  t3=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  print t3
  print type(t3)
  运行结果:
#####timestamp时间戳#####  1510219689.67
  <type 'float'>
  #####time tuple时间元组#####
  <type 'time.struct_time'>
  #####string字符串#####
  2017-11-09 17:28:09
  <type 'str'>
  常用的类型转换:
  float --> struct tuple:   time.localtime( float )
  struct time tuple --> str: time.strftime(format, struct time tuple)
  str --> struct time tuple: time.strptime(str, format)
  struct time tuple --> float : time.mktime(struct time tuple)
  struct time tuple --> datetime: datetime(*time_tuple[0:6])
  float --> datetime: datetime.datetime.fromtimestamp( float )
  datetime --> struct time tuple: datetime.timetuple()
from datetime import datetime  import time
  print '#####float --> struct tuple'
  t0=time.localtime()
  t1=datetime.now().timetuple()
  print t0,type(t0)
  print t1,type(t1)
  print '#####datetime --> str'
  t2=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  print t2,type(t2)
  print '#####str --> datetime'
  t3=datetime.now().strptime('2017-11-11','%Y-%m-%d')
  print t3,type(t3)
  print '#####struct time tuple --> float '
  t4=time.mktime(time.localtime())
  print t4,type(t4)
  print '#####struct time tuple --> datetime'
  t5=datetime(2017,11,11)
  print t5,type(t5)
  print '#####float --> datetime'
  t6=datetime.fromtimestamp(time.time())
  print t6,type(t6)
  print '#####datetime --> struct time tuple'
  t7=datetime.timetuple(datetime.now())
  print t7,type(t7)
  运行结果:
#####float --> struct tuple  time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=0) <type 'time.struct_time'>
  time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=-1) <type 'time.struct_time'>
  #####datetime --> str
  2017-11-09 17:16:59 <type 'str'>
  #####str --> datetime
  2017-11-11 00:00:00 <type 'datetime.datetime'>
  #####struct time tuple --> float
  1510219019.0 <type 'float'>
  #####struct time tuple --> datetime
  2017-11-11 00:00:00 <type 'datetime.datetime'>
  #####float --> datetime
  2017-11-09 17:16:59.269000 <type 'datetime.datetime'>
  #####datetime --> struct time tuple
  time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=-1) <type 'time.struct_time'>
  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 当前时区的名称%% %号本身

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549485-1-1.html 上篇帖子: Python第一课 下篇帖子: Linux Python-KillMySQL的博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表