zoukankan      html  css  js  c++  java
  • 包的概念与使用,包中的相对导入语法 及相关语法

    跨文件夹导入模块

    1.a文件夹所在目录在环境变量,a文件夹中的ma模块可以被以下方式导入  

        import  a.ma             form  a   import   ma

    2.如果a文件夹所在目录在环境变量,a文件夹中的b文件夹的mb模块可以被一下方式导入

        import  a.b.mb          form a.b   import  mb

    3.如果a文件夹所在目录在环境变量。a文件夹中的b文件夹的mb模块中的bbb名字要被直接导入

        import a.b.mb.bbb    # 错误   所有.左侧必须是文件夹

        form a.b import mb.bbb   #错误   同上

        from a.b.mb  import bbb      #正确

    模块的两种被执行方式

    1.一个py文件作为自执行文件,__name__变量的值为‘__main__’

    2.一个py文件作为模块被导入执行,__name__变量的值‘文件(模块)名

    @两种方式的区别        可以让一个文件可以自执行   ,亦可以被导入执行   共存

    if __name__ == '__main__':
        # 自执行的逻辑 => 因为在文件作为模块使用时 __name__为文件名,不满足条件
        pass
    

    包:一系列模块的集合体,用文件夹来管理一系列有联系功能的模块,该文件夹称之为包,文件夹名为包名

    包与普通文件夹存在区别:  包的文件夹中一定有一个__init__.py文件

    --py2:必须创建        py3:建议创建,不创建系统会自动创建

    __init__.py文件               

     1)产生一个全局名称空间,提供给包的,  就代表包的名称空间

      2)管理包可以直接点出来使用的  名字

    导包完成的三件事

    1.编译形成包中__init__.py文件的pyc文件

    2.执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中的所有名字存放期中,该名称空间即代表包的名称空间

    3.再导包的文件中,产生一个与包名相同的名字,指向包的名称空间        (__init__.py文件的全局名称空间)

    直接使用包中模块

    如果只是想作为普通文件夹,py3中可以省略__init__文件,本质上文件夹也是包

    导入的手段:  指名道姓到某一个模块        指名道姓到某一个模块中的名字

    包的管理

    在包中采用相对导入管理模块或模块中的名字

    在包的__init__.py文件或是包中任意一个模块中

     . 代表当前文件所在目录

    .. 代表当前文件所在目录的上一级目录

    *:.语法不能出包,因为包外的文件能自执行,但拥有.开头导入的文件不能自执行

               

      

  • 相关阅读:
    android 添加特定IP走局域网
    EF CORE 使用排他锁 干货 方法 悲观锁 entity framework 悲观锁
    VS C# xamarin 开发android 调试正常 发布分发后运行闪退出错
    .NET CORE 1.1 迁移到.NET 2.0正式版
    C# .NET Winform等程序一运行就闪退 不同环境 换到其他电脑,例如XP之类的解决方法。
    Cnblogs自定义皮肤css样式-星空观测者
    在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
    适配各种Windows分辨率,为DPI添加感知,当在高DPI时,禁用WINFORM缩放等。
    为WIN8 APP创建置顶desktop应用
    React-Native 系列视频失效补链及一些碎碎念
  • 原文地址:https://www.cnblogs.com/wyf20190411-/p/10820499.html
Copyright © 2011-2022 走看看