zoukankan      html  css  js  c++  java
  • 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))  #给时间做加法
     
  • 相关阅读:
    第八篇 EBS实现企业日常业务运管模型的解决方案设计思路
    第7篇 ORACLE EBS DEMO虚拟机环境的安装
    第六篇 ORACLE EBS用户界面通用元素或功能背后的道理解析
    第五篇 Getting Started with ORACLE EBS(开始学习ORACLE EBS)
    嵌入式根文件系统的移植和制作详解
    性能测试工具
    UEFI GPT
    系统启动过程和系统安装过程
    Gentoo安装
    Gentoo源码安装图解
  • 原文地址:https://www.cnblogs.com/Tiamo-w/p/10273307.html
Copyright © 2011-2022 走看看