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

    模块:别人写好的函数、变量、方法,放在一个文件里(这个文件可以被我们直接使用)这个文件就是个模块

        .py dll文件  zip文件

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

    模块的导入:

    模块导入的过程中发生了什么

      找到这个模块

      判断这个模块是否被导入过了

      如果没有被导入过

        创建一个属于这个模块的命名空间

        让模块的名字指向这个空间

        执行这个模块中的代码

    import 模块名

      模块的导入想当于这个模块所在的文件被导入,模块的多次导入不会重复执行。

      命名空间

      为模块起别名  as  语句  (起了别名之后,使用这个模块就只能用这个别名了)

      一行导入多个模块:(顺序)内置、第三方、自定义

    from import    也会执行文件,但是import了什么,就只能用什么

      命名空间  名字引用模块中的名字

      为导入的名字起别名

      一行导入多个名字

      *和__all__的关系:__all__只能约束*导入变量的内容

        from my_module import * (默认是导入所有,但是__all__=[“a”]列表没有的就不会被导入)

    模块引用中的情况:

      1.模块的循环引用***

        模块之间不允许循环引用

      2.模块的加载与修改*

        已经被导入的模块发生了修改,是不会被感知的

        要想修改的模块被正在运行中的程序感知到,重启这个程序

      3.把模块当成脚本执行*****

        执行一个py文件的方式:

          1.在cmd执行,在pytho执行:直接执行-以脚本的形式

          2.导入这个文件

        脚本:直接运行的文件,都是py文件,能独立的提供一个功能,能自主完成交互

        模块:导入这个文件 ,都是py文件,能够被导入调用这个功能,不能自主交互

        if __name__ == "__main__"    当文件被当做脚本的时候

          代码            当文件被当成模块导入的时候  __name__ =="模块的名字"

        下载这里面的代码只有这个文件被当做脚本执行的时候才会执行

      4.模块的搜索路径*****

        和被当做脚本执行的文件,同目录下的模块,可以被直接导入

        除此之外其他路径下的模块,在被导入的时候需要自己修改sys.path列表

      包:文件夹中有一个__init__.py文件

      包:是几个模块的集合

    直接导入包,需要通过设计init文件,来完成导入包之后的操作

    导入一个包

      不意味着这个包下面的所有内容都是可以被使用的

      导入一个包到底发生了什么

        相当于执行了这个包下面的__init__.py文件

    绝对导入:

      在执行一个py脚本的时候,这个脚本以及和这个脚本同级的模块中只能用绝对导入

    缺点:

      所有的导入都要从一个根目录下往后解释这个文件夹之间的关系

      如果当前导入包的文件个被导入的包的位置关系发生了变化,那么所有的init文件都要做相应的调整

    相对导入:

      不需要去反复的修改路径

        只要一个包中的所有文件夹和文件的相对位置不发生改变

      也不需要去关心当前这个包和被执行的文件之间的层级关系

    缺点:

      含有相对导入的py文件不能直接被执行

      必须放在包里被导入的调用才能正常使用

  • 相关阅读:
    C语言-数组指针
    关于知网文章下载
    SpringBoot静态资源文件存放位置
    ArchLinux安装的vscode修改插件源
    I/O复用的高级应用三:同时处理TCP和UDP服务
    Windows查看动态库/静态库位数的方法
    VS 窗口程序没有输出时
    Windows下编译Boost
    VS设置C++代码注释模板
    No Target Architecture
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9525468.html
Copyright © 2011-2022 走看看