zoukankan      html  css  js  c++  java
  • 模块

    day16 模块

    1. 自定义模块 注意被调用模块是否有 __all__ = [ ]

    • 定义: 模块就是就是文件,存放一堆常用的函数
    • 模块分类:
      • 1.内置模块(标准库):python解释器自带的,如time模块,os模块
      • 2.第三方模块(各种大神写的):需要额外下载(pypi网站)
      • 3.自定义模块(自己写的):不需要额外下载
    • 模块的好处
      • 1.避免写重复代码
      • 2.可以多次利用
      • 3.拿来主义,提升开发效率

    1.1 import (导入) 的使用 和 from 文件名 import 单个变量或函数

      1. 倒入发生的事情

        1.在当前的名称空间中开辟一个新的空间(text)

        2.将模块所有代码执行

        3.通过模块名,进行查找函数(工具)

      1. 多个import只执行一次

      例如:构建一个text.py文件,在其他文件中调用

      import text
      import text
      print("你好啊")
      import text
      执行结果:
      这是一个自定义模块
      你好啊
      

      1. 查看是否已经导入 locals() (查看当前空间中的变量) globals() 查看全局空间中的变量
    print(locals())
    
      1. 第一次导入模块执行三件事

        1.创建一个以模块名命名的名称空间

        2.执行这个名称空间(即导入的模块)里面的代码

        3.通过此模块名+点(.) 调用 ,[与全局没有冲突]

        例如

        import text
        name = "宝元"
        print(text.name)
        print(name)
        结果
        这是一个自定义模块
        这是一个水果箱
        宝元
        

    5.为模块起别名 import + 文件名 + as + 新名字

    ​ 好处:1.将很长的模块名改成很短,方便使用

    ​ 2.有利于代码的扩展和优化

    ​ 例如:

    msg = """
    1.扳手
    2.螺丝刀
    >>>
    """
    choose = input(msg)   
    if choose == "1":
        import text
        text.func()
    elif choose == "2":
        import test
        test.func()
    

    例如2:

    msg = """
    1.扳手
    2.螺丝刀
    >>>
    """
    choose = input(msg)
    if choose == "1":
        import text as t
    elif choose == "2":
        import test as t
    
    t.func()
    

    1. **from 文件名 import 单个函数或变量 **

      好处: 不用全部导入,占用内存小

      缺点: 会和当前文件定义的变量或者函数发生冲突

    name = "宝元"
    from text import name
    print(name)
    结果:
    这是一个text工具箱
    alex    #被覆盖了
    
    from text import name
    name = "宝元"
    print(name)
    结果:
    这是一个text工具箱
    宝元    #被覆盖了
    

    解决方法

    name = "宝元"
    from text import name as t
    print(t)
    print(name)
    结果:
    这是一个text工具箱
    alex
    宝元
    
    1. **from 文件名 import *** (*代表全部调用)

      name = "宝元"
      def func():
          print("is 一个特大号的钳子")
      
      from text import *
      print(name)
      func()
      结果:
      这是一个text工具箱
      alex
      is 18号扳手
      

      ![

    name = "宝元"
    def func():
        print("is 一个特大号的钳子")
    
    from text import *
    print(name)
    func()
    结果:
    这是一个text工具箱
    宝元
    is 一个特大号的钳子
    

    1. 循环导入的问题

      import test              #day16练习
      print(test.name)
      
      import day16练习           #text
      name = "alex" # 说明书
      print("这是一个text工具箱")
      
      import text                 #test
      name = "alex" # 说明书
      print("这是一个test工具箱")
      

    9.测试

    在当前模块中使用__name__ 就是 "__main__"
    当模块被导入的时候__name__就是被导入的模块名
    

    10.导入路径

    相对路径

    绝对路径

    from sys import path
    path.insert(0,"E:\")
    import text
    print(text.name)
    

    2. 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 当前时区的名称 
    %% %号本身
    

    import time

    • 1.时间戳:表示格林尼治时间从1970年1月1日00:00:00开始按计算到现在的时间,是float类型,浮点数

      import time
      time.time()
      print(time.time())
      结果: 1564050362.5780344
      
      
      
    • 格式化字符串时间: 格式化的时间字符串(Format String): ‘2019-07-25’

    • print(type(time.strftime("%Y-%m-%d %H:%M:%S")))  # 给人看的
      print(time.strftime("%Y-%m-%d %H:%M:%S"))
      print(time.gmtime())  # 结构化时间 数据类型是是命名元组
      print(time.gmtime()[0])
      print(time.gmtime().tm_year)
      结果
      <class 'str'>
      2019-07-25 19:27:12
      time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=11, tm_min=27, tm_sec=12, tm_wday=3, tm_yday=206, tm_isdst=0)
      2019
      2019
      
    • 时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

    • 将时间戳转换为字符串时间

    • print(time.strftime("%Y-%m-%d %H:%M:%S"))  # 给人看的,当地时间
      print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()))) #格林尼治时间
      结果:
      2019-07-25 19:40:24
      2019-07-25 11:40:24
      
    • 将字符串时间转换成时间戳

    • print(time.mktime(time.strptime("2019-07-25 19:36:36","%Y-%m-%d %H:%M:%S")))
      结果:
      1564054596.0
      
    • 格式化时间

    • time.strftime("格式化","结构化时间")
      print(time.strptime("2019-07-25 19:36:36","%Y-%m-%d %H:%M:%S"))
      结果:
      time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=36, tm_sec=36, tm_wday=3, tm_yday=206, tm_isdst=-1)
      time.strptime("字符串","格式化")
      

    3. datetime 模块

    4. random 模块

    ![

    ​ 全部双引号

  • 相关阅读:
    改造vue-quill-editor: 结合element-ui上传图片到服务器
    webpack2.X、Vue学习以及将两者相结合
    Vuex-一个专为 Vue.js 应用程序开发的状态管理模式
    vue深究第一弹:computed与watch的异同
    管理系统列表和详情配置
    Vue和vue-template-compiler版本之间的问题
    vuex 闲置状态重置方案
    mac install brew
    Android——推断Service是否已经启动
    【android】uses-permission和permission具体解释
  • 原文地址:https://www.cnblogs.com/lvweihe/p/11276011.html
Copyright © 2011-2022 走看看