zoukankan      html  css  js  c++  java
  • 包导入基础知识

    # -*- coding: utf-8 -*-
    #python 27
    #xiaodeng
    #包导入基础知识
    
    
    #注意:
    #除了模块名之外,导入也可以指定目录路径。python代码的目录就称为包,因此这类导入就称之为包导入。
    #实际上,包导入时把计算机上的目录变成另一个python命名空间,而属性则对应于目录中所包含的子目录和模块文件。
    #这是高级特征,他提供了层次,对于组织大型系统内的文件很方便。而且可以简化模块搜索路径的设置。
    
    
    
    #包导入的运作机制:
    #在import语句中列举简单文件名的地方,可以改成列出路径的名称,彼此以点号相隔。
    #需要有__init__语句
    
    import dir1.dir2.mod    #主要要是python所能搜索到的路径才行。
        #dir1:表明机器上有一个dir1目录
        #dir2:表明dir1内部包含dir2目录
        #mod:dir2目录下有一个mod.py文件
    
    
    #__init__包文件
    #如果选择使用包导入,就必须多遵循一条约束:包导入语句的路径中的每个目录内都必须有__init__.py文件。【注意是每个目录】
    #如上例子,在dir1和dir2目录下面都必须包含__init__.py文件。
    #容器目录dir() 也就是顶层目录不需要这类文件,因此其本身没有列在import语句之中。
    
    
    
    
    #__init__.py文件需要遵循的规则:
    #dir1和dir2都必须包含一个__init__.py文件
    #dir()是容器,不需要__init__.py文件,即便是有,这个文件也会被忽视。其语言本身做了处理
    #dir()必须列在模块搜索路径上(即:此目录必须是主目录,或者列在pythonpath之中)
    #结构基本说明:
    dir()
        dir1
            __init__.py
            dir2
                __init__.py
                mod.py
    #__init__.py本身扮演了包初始化的钩子,替目录产生模块命名空间及使用目录导入时实现from行为的角色
    
    
    
    #包初始化:
    #python导入某个目录时,会自动执行该目录下__init__.py文件中的所有程序代码。因此,这类文件自然就是
    #放置包内文件所需要初始化的代码的场所。
    
    
    #模块命名空间的初始化
    #在包导入的模型中,脚本内的目录路径,在导入后会变成真实的嵌套对象路径。
    
    
    #from*语句的行为
    #作为一个高级功能,可以在__init__.py文件内使用__all__列表来定义目录以from*语句形式导入。
    #__all__,上面会列出应该导入的子模块的名称清单。
  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/4921937.html
Copyright © 2011-2022 走看看