zoukankan      html  css  js  c++  java
  • python包

    包(package):在Python中不止有模块,还有另外一个概念,叫做包,包是作为文件夹存在的,文件夹中必须存在__init__.py文件,包可以包含模块,也可以包含其它包。

    封装成包是很简单的。在文件系统上组织你的代码,并确保每个目录都定义了一个 __init__.py 文件。例如:
    graphics/
        __init__.py
        primitive/
            __init__.py
            line.py
            fill.py
            text.py
        formats/
            __init__.py
            png.py
            jpg.py
    

    __init__.py文件的作用:

       1)__init__.py 是 Python 中包的标识。普通的文件夹是不能通过 import 被其它模块使用的,但是创建了 __init__.py 文件后,该文件夹就

          成为一个 package,它下面的所有模块都能被导入。

       2)相当于 class 中的 def __init__(self) 函数,可以在里面放置代码来初始化包。如果第一次执行下面语句:

    import graphics
    

          则文件 graphics/__init__.py 将被导入, 因为.py文件是一个模块,所以 __init__.py 的导入流程就是模块的导入,可阅读博客:python模块

          所以会建立 graphics 命名空间的内容。

          如果执行下面的语句:

    import graphics.format.jpg
    

          文件 graphics/__init__.py 和文件 graphics/formats/__init__.py 将在文件 graphics/formats/jpg.py 导入之前导入。

          绝大部分时候让 __init__.py 空着就好。但是有些情况下可能包含代码。举个例子,__init__.py 能够用来自动加载子模块:

    # graphics/formats/__init__.py
    from . import jpg
    from . import png
    

          像这样一个文件, 用户可以仅仅通过 import grahpics.formats 来代替 import graph-ics.formats.jpg 以及 import graphics.formats.png。

       3)当使用 from module import * 语句时,希望对从模块或包导出的符号进行精确控制。在__init__中定义一个变量 __all__ 来明确地列出需要导出的模块和包

          如果 __all__ 存在于普通模块中,那就是用来限定需要导出的函数和变量

      

  • 相关阅读:
    java.lang.UnsupportedClassVersionError: action/Login : Unsupported major.minor version 52.0 (unable to load class action.Login)异常
    main方法和args参数
    建立maven工程pom.xml报错:web.xml is missing and <failOnMissingWebXml> is set to true
    遍历js中数组或者对象
    setAttribute设置无效
    javascript中用setAttribute给元素添加colspan属性无效
    ssm回顾笔记(一)
    struts2学习笔记(一)
    esay-ui学习笔记(一)
    农银电商项目学习笔记(一)
  • 原文地址:https://www.cnblogs.com/yanghh/p/13200966.html
Copyright © 2011-2022 走看看