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

[经验分享] 21. Python 模块

[复制链接]

尚未签到

发表于 2018-8-12 14:27:40 | 显示全部楼层 |阅读模式
  什么是模块?
  在日常的开发工作中,我们要写很多的python代码,如果都写在一个文件中,会导致代码特别难维护,为了拓展代码的可维护性,我们把函写在不同的文件里,这样每个文件包含的文件就比较少,逻辑更加清楚。在python中,我们创建的文件基本都是以.py结尾,那一个.py的文件就称之为模块。
  为了方便管理方便管理模块,python中又引了包(Package)这个概念。每个包下面都有一个__init__.py文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,举个例子:test目录下面有__init__.py, aaa.py,bbb.py三个文件,如下所示:
  [root@localhost ~]# tree test
  test
  ├── aaa.py
  ├── bbb.py
  └── __init__.py
  0 directories, 3 files
  1. import
  Pycharm常用的导入模块的快捷键:alt + enter
  有时候一个文件或者一个包中已经出现了一个函数,我们在另一个python代码中需要引入该文件或者该文件的某个函数,那怎么解决呢?
  python给我们提供一个关键字import,下面我们来了解一下它的用法:
  1,如果是本地导入文件,直接使用:import filename (即:import filename.py)
  2,如果导入的是一个包,该包下面必须是有__init__.py文件才可以导入,否则报错,只有有了__init__.py文件,python解析器才会把这个目录当成是的包
  常用的导入模块常用的格式:
  form xxx import xxx
  import xxx
  在导入的时候,.py的后缀直接省略,如果是多级的包,或者想导入包里面的函数等,可以使用from进行导入
  举个例子:
  from aaa import bbb
  import os
  import ccc.qqq
  from ddd.eee import fff
  解释:
  第一个例子:导入 aaa 包下面的 bbb 模块或者导入 aaa 文件下面的 bbb 类或者函数
  第二个例子:直接导入系统模块os模块
  第三个例子:直接导入自定义模块文件(这样写比较麻烦,一般都用第一种和第四种)
  第四个例子:第一个例子的深化,导入ddd模块包里eee模块文件内的 fff 方法(方法==> "函数" 或者 "类" 或者 "ddd.eee的 别名")
  栗子如下:
  import ling.test as aaa    ##aaa 就是ling.test的别名
  print('aaaaaaaaaaaaaaaaaaaaaa')
  aaa.hello() ## 别名用法。
  print('aaaaaaaaaaaaaaaaaaaaaa')
  总结:
  导入模块,就是一层一层的调用
  仅使用 import导入时,  import后面导入的什么,在调用的时候就必须写什么,除非你添加用 from 进行导入。
  导入 模块文件 的时候不写后缀名字
  2. datetime 时间模块 获取时间
  时间模块工作中经常用到的,打印日志等等都会用到时间模块。
  先来看看几个子类之间的关系
  object
  timedelta
  tzinfo
  time
  date
  datetime
  ① time 模块
  基本不用于取时间,要取时间推荐使用 datetime 模块
  time 独有的用法:
  for i in xrange(1,10):
  print (i)
  time.sleep(3)##休眠3秒
  ② datetime 模块
  from datetime import datetime
  now_time = datetime.now()
  print (now_time)
  a = now_time.strftime('%Y-%m-%d %H:%M:%S')
  print(a)
  解释:
  1,先导入datetime类
  2,通过datetime的now方法就获得当前所需要的时间
  3,datetime还是有好多方法的,可以获取year, month,等,请通过dir()方法查看
  4,此时我们获得的now_time还是一个datetime类,所以我们需用用strftime方法转换成字符串,strftime的参数就是最终需要字符串的形式。
  5,Strftime需要便是时间的参数有很多,下面我们介绍一下最长用的一些参数:
  格式参数如下:
  %Y 带世纪部分的十制年份
  %m 十进制表示的月份
  %d 十进制表示的每月的第几天
  %H 24小时制的小时
  %M 十时制表示的分钟数
  %S 十进制的秒数
  %c  标准时间,如:04/25/17 14:35:14  类似于这种形式
  以上,这几个参数就是最常用到的我们用的时间
  另外,在开发过程中,经常要取昨天的时间,或者明天的时间,应该怎么办呢?
  例子:
  from datetime import datetime, timedelta
  now_time = datetime.now()
  a = now_time.strftime('%c')
  print(now_time)
  print(a)
  b = now_time + timedelta(days=-1)
  print(b)
  解释:
  timedelta 可以接收 days 和 seconds 两个参数,正数代表几天之后的,负数代表几天之前的
  所以,b 代表的是一天之前的时间。
  3.时间格式互相转换
  时间的三种存在方式:时间对象,时间字符串,时间戳。
  (1)字符串 转 datetime:
  from datetime import datetime
  string = '2017-04-25 11:59:58'
  time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
  print(time1)
  结果:
  2017-04-25 11:59:58
  (2)datetime 转 字符串:
  from datetime import datetime
  string = '2017-04-25 11:59:58'
  time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
  print(time1)
  print(type(time1))
  time1_str = datetime.strftime(time1, '%Y-%m-%d %H:%M:%S')
  print(time1_str)
  print(type(time1_str))
  结果:
  2017-04-25 11:59:58
  <type 'datetime.datetime'>
  2017-04-25 11:59:58
  <type 'str'>
  (3)时间戳 转 时间对象:
  from datetime import datetime
  import time
  time1 = time.time()
  print(time1)
  time1_str = datetime.fromtimestamp(time1)
  print(time1_str)
  print(type(time1_str))
  结果:
  1493107955.66
  2017-04-25 16:12:35.660000
  <type 'datetime.datetime'>
  解释:
  1,datetime模块是包装了time模块的,所以只需要了解datetime模块就可以。
  2,time.time()是获取当前时间的时间戳,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
  3,datetime下面下面有个函数 fromtimestamp (时间戳)会把时间戳自动转换成 datetime 类型(时间对象类型)

运维网声明 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-550719-1-1.html 上篇帖子: Python学习之day1 下篇帖子: python学习笔记(基础)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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