zoukankan      html  css  js  c++  java
  • python之模块

    复制代码
    Graphics/
          __init__.py
          plot1d.py
          Primitive/
             __init__.py
             lines.py
             fill.py
             text.py
             ...
          Graph2d/
             __init__.py
             plot2d.py
    复制代码

    多个关系密切的模块应该组织成一个包,以便于维护和使用。这项技术能有效避免名字空间冲突。

    创建一个名字为包名字的文件夹并在该文件夹下创建一个__init__.py 文件就定义了一个包。

    无论一个包的哪个部分被导入, 在文件__init__.py中的代码都会运行.这个文件的内容允许为空,不过通常情况下它用来存放包的初始化代码

    导入过程遇到的所有 __init__.py文件都被运行.因此 import Graphics.Primitive.fill 语句会顺序运行 Graphics 和 Primitive 文件夹下的__init__.py文件.

    如下面这个语句只会执行Graphics目录下的__init__.py文件,而不会导入任何模块

    import Graphics
    Graphics.Primitive.fill.floodfill(img,x,y,color)  # 失败!

     不过既然 import Graphics 语句会运行 Graphics 目录下的 __init__..py文件,我们就可以采取下面的手段来解决这个问题:

    # Graphics/__init__.py
    import plot1d, Primitive, Graph2d
    
    # Graphics/Primitive/__init__.py
    import lines, fill, text, ...

     这样import Graphics语句就可以导入所有的子模块(只能用全名来访问这些模块的属性).

    在lines.py中如果导入 text.py 、plot1d.py 、plot2d.py

    from . import text  
    from . import plot1d
    from ..Graph2d import plot2d

    2015-06-01

  • 相关阅读:
    廖雪峰Java6IO编程-2input和output-1inputStream
    安装spy-debugger查看前端日志
    廖雪峰Java6IO编程-1IO基础-1IO简介
    廖雪峰Java5集合-6Stack-1使用Stack
    廖雪峰Java5Java集合-5Queue-1使用Queue
    廖雪峰Java5集合-4Set-1使用Set
    20)升级登录标志
    19)加了验证码验证
    94)图片验证码
    18)添加引号转移函数,防止SQL注入
  • 原文地址:https://www.cnblogs.com/whuyt/p/4543389.html
Copyright © 2011-2022 走看看