• day21、模块


    模块:

    模块,用一砣代码实现了某个功能的代码集合。不同功能,放置在不同模块中,模块就是一个.py文件。避免函数重复写代码。对于相同功能的代码。只需要调用该模块或者该模块里面的函数就可以。增加灵活性,和维护性。事先定义好,其他模块可以来调用该函数。

    所以,模块一共三种:

    • python标准库(内置模块):time模块(time.py文件)import time   time.sleep()。python解释器内置,查找顺序最高!!c语言内置
    • 第三方模块                    无法直接调用到,不过可以自己安装外部资源库。可以通过pap命令安装到python内部。
    • 应用程序自定义模块  

    import:输入; 进口,导入; 重要性; 意义;  

    简单例子

    导入模块:import cal.

    cal文件

    #/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    #保存函数相关的函数
    print('ok1')
    def add(x,y):
        return x+y
    
    def sub(x,y):
        return x-y
    print('ok2')

    import之后,发现会先执行一遍要导入的模块。所以在模块里面:只写功能函数,避免写逻辑函数!

    ok1
    ok2

    import的作用:

          1、执行调用模块文件

          2、引入变量名(cal)所以:cal.add(2,3)就可以执行cal模块里面的函数。

    调用调用多个模块:import cal,time  两者并列执行。

    【***.函数→cal.add(2,3)】简写:

    from cal import add  也会执行cal里面的所有代码。然后在找到对应的add函数名。

    from cal import add

    from cal import *  导入cal模块中的所有函数。避免如此用,过多的导入函数,可能会和当前逻辑中的函数重名,导致只能生效后者。

    二、路径

      会把执行文件的路径添加到:sys.path里面。查找模块会到这里面来查找。

    所以调用模块时:

    如:import cal  :这里里面的cal必须和当前调用的执行文件包含这一路径。后者无法找到:cal文件模块。

    所有的import都会从执行文件的目录去找,能找到就执行,不能找到就报错。对于不在该目录下,又要被调用的模块可以通过from来解决

    from my_modle(和执行文件同级)import cal   这样就可以导入cal里面的函数变量

    解决办法:加载路径;

      

     

     跨文件调用:

     

    2.1、修改环境变量---临时的环境变量,

    二、package 包

      1⃣️、把功能相关,或者大功能放置在一起,形成一个包。比如:日志相关的包。如此代码更加清晰,微信【支付、聊天、朋友圈区分为不同的包→之后继续往下细分】

      2⃣️、通过包来隔离个个py文件,避免相互之间的名字冲突,因为彼此路径不同。

    2.1 包的调用

    1⃣️

    from    web.web1.web3 impprt cal
    cal.add(2,6)
    >>>
    8

    2⃣️

    #2
    from web.web1.web3.cal import add
    print(add(2,3) )
    
    >>>>
    5
    
    #3 
    from web.web1 import web3      执行web3的_init_文件。唯一不支持的调用方式
    print(web3.cal.add(2,3))
    
    >>>
    报错
    
    
    #4
     from web.web1 import web3     在web3里面的init文件里面写一句:from . import cal
    print(web3.cal.add(2,3))
    
    >>>
    8

    2.2、程序通常与

      if  '__name__'==main:  用于被调用文件的测试。放置在:bin文件中,不像该文件北其他文件调用。避免相互之间的相互调用。避免大坑!!!

         cal.add()

    作为主程序运行时:

            变量__name__==main   可以利用相等的特性对模块进行测试。

      当前模块被调用时:__name__是cal.py的路径名字!!。web.web1.web3.cal.这样可以避免被调用时执行测试部分的代码,避免混乱。

    三、time模块

    在Python中,通常有这几种方式来表示时间:

    • 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
    • 格式化的时间字符串
    • 元组(struct_time)   :         struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

    3.1、代码例子

    当前运行文件的文件名为:time,或者运行文件同级存在time文件。即使重名,任不会报错,依然可以如此调用到内置time模块。

    import time  
    time.sleep(2)
    print('ok')

    解释:无论是自己定义、系统内置中,都是到环境变量中去查找(sys.path)

    当前:最深路径到:_day21.

    附录:关于脱产三期【工程的路径】,也被加入到路径当众的解释:在系统中执行就没有此路径 。所以是pytharm自己添加上!!

    3.2 time模块的方法:

    1⃣️、时间模块

    时间戳:

    在Python中,通常有这几种方式来表示时间:

    • 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
    • 格式化的时间字符串
    • 元组(struct_time)   :         struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
    import time
    # 1 time() :返回当前时间的时间戳
    time.time()  #1473525444.037215
     
    #----------------------------------------------------------
     
    # 2 localtime([secs])
    # 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
    time.localtime() #time.struct_time(tm_year=2016, tm_mon=9, tm_mday=11, tm_hour=0,
    # tm_min=38, tm_sec=39, tm_wday=6, tm_yday=255, tm_isdst=0)
    time.localtime(1473525444.037215)
     
    #----------------------------------------------------------
     
    # 3 gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
     
    #----------------------------------------------------------
     
    # 4 mktime(t) : 将一个struct_time转化为时间戳。
    print(time.mktime(time.localtime()))#1473525749.0
     
    #----------------------------------------------------------
     
    # 5 asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
    # 如果没有参数,将会将time.localtime()作为参数传入。
    print(time.asctime())#Sun Sep 11 00:43:43 2016
     
    #----------------------------------------------------------
     
    # 6 ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
    # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
    print(time.ctime())  # Sun Sep 11 00:46:38 2016
     
    print(time.ctime(time.time()))  # Sun Sep 11 00:46:38 2016
     
    # 7 strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
    # time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个
    # 元素越界,ValueError的错误将会被抛出。
    print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56
     
    # 8 time.strptime(string[, format])
    # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
     
    #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
    #  tm_wday=3, tm_yday=125, tm_isdst=-1)
     
    #在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。
     
     
    # 9 sleep(secs)
    # 线程推迟指定的时间运行,单位为秒。
     
    # 10 clock()
    # 这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。
    # 而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行
    # 时间,即两次时间差。

    Format string:字符串时间

    Timestamp:时间戳

    struct_time:结构化时间

    print(time.localtime(time.time()))
    print(time.gmtime(time.time()))
    print(time.mktime(time.localtime()))
    print(time.mktime(time.gmtime()))
    
    >>>
    time.struct_time(tm_year=2016, tm_mon=12, tm_mday=31, tm_hour=21, tm_min=11, tm_sec=20, tm_wday=5, tm_yday=366, tm_isdst=0)
    time.struct_time(tm_year=2016, tm_mon=12, tm_mday=31, tm_hour=13, tm_min=11, tm_sec=20, tm_wday=5, tm_yday=366, tm_isdst=0)
    1483189880.0
    1483161080.0
    help(time)
    help(time.asctime)

    模块大全:

    random模块(* *)

     os模块(* * * *)

    sys模块(* * *)

    json & pickle(* * * *)

    shelve模块(* * *)

    xml模块(* *)

    configparser模块(* *)

    hashlib模块(* *)

    subprocess模块(* * * *)

    logging模块(* * * * *)

     re模块(* * * * *)

  • 相关阅读:
    浅析C++:private、protected和public
    数据结构关于简单顺序表的构建(C++)
    小小的项目——简单的注释转换
    宏定义实现两数交换
    简易小程序(将字符型数据转换为浮点型数据)
    小小比较格式运算符及截图显示
    python __call__() 方法
    python_selenium简单的滑动验证码
    scrapy 爬虫学习二[中间件的学习]
    scrapy 爬虫学习一
  • 原文地址:https://www.cnblogs.com/laixiaoyun/p/6166445.html
Copyright © 2020-2023  润新知