zoukankan      html  css  js  c++  java
  • python 模块和包

     一、模 块                           

      什么是模块:

      已经写好的一组功能的集合
      别人写好的函数 变量 方法 放在一个文件里 (这个文件可以被我们直接使用)这个文件就是个模块
      py dll文件 zip文件

    如何自己写一个模块:
      
      
    创建一个py文件,给他起一个符合变量命名规则的名字,这个名字就是模块名

       在导入模块的过程中发生了什么?
        
       导入一个模块就是执行一个模块

     import 导入模块     

    #怎么使用my_module模块中的名字
    print(my_module.name)
    print(my_module.read1)
    my_module.read1()
    
    # import的命名空间,模块和当前文件在不同的命名空间中
    name = 'asdf'
    def read1():
        print('main read1')
    
    print(name)
    print(my_module.name)

    # 模块是否可以被重复导入
    # import my_module
    # import my_module
    # 怎么判断这个模块已经被导入过了???
    # import sys
    # print(sys.modules)
     模块导入的过程中发生了什么?

    找到这个模块
    判断这个模块是否被导入过了
    如果没有被导入过
    创建一个属于这个模块的命名空间
    让模块的名字 指向 这个空间
    执行这个模块中的代码
    name = 'egon'
    def read1():
        print('main read1')
    
    
    print(name)
    print(my_module.name)
    my_module.read2()
    

       给模块起别名,起了别名之后,使用这个模块就都使用别名引用变量了

       导入多个模块

        import os,time

        import os as o,time as t

        规范建议 模块应该一个一个的导入 :

        内置模块 ===> 扩展(第三方)模块 ===> 自定义模块

    from import 导入模块

      如何使用 from import

        需要从一个文件中使用哪个名字,就把这个名字导入进来

        from my_module import name

       from import的过程中仍然执行了这个被导入的文件

        from my_module import read1
        import谁就只能用谁
        read1()
        from my_module import read2
        read2()

      当前文件命名空间和模块的命名空间的问题
        from my_module import read1
        def read1():
        print('in my read1')
        read1()
      
        from my_module import read2
        read2()

      from import导入的过程中发生了什么事儿?
        1.找到要被导入的模块
        2.判断这个模块是否被导入过
        3.如果这个模块没被导入过
          创建一个属于这个模块的命名空间
          执行这个文件
          找到你要导入的变量
          给你要导入的变量创建一个引用,指向要导入的变量

    二、包                                

  • 相关阅读:
    我的小问题
    js实现随机的四则运算题目
    VC++ 6.0 无法打开文件
    VC6.0致命错误 RC1015: 无法打开包含文件 'afxres.h'.解决方案
    VS2010 如何添加H文件目录和LIB目录
    学习计划(四月)
    IIS与apache的对比:大杂烩
    ubuntu下有线网卡启动(Atheros AR8161 Gigabit Ethernet)
    putty终端乱码解决办法
    Proxy Switchysharp配置
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9524778.html
Copyright © 2011-2022 走看看