2018年3月27日星期二

python3的包导入

python3包导入机制



导言

    在今天的编程中,有关于包导入出错的情况再次出现,所以我决定写个blog来理清自己的思路,有些事情不仅要记下来,还要说出去,这样,有助于自己记忆力和逻辑的通顺。


实例分析

    1. MainModule同级目录

    package
        |
        +--a.py
        |   |
        |   +--class Module
        |
        +--Main.py
        我的做法
    from package.a import Module
    from .a import Module "是错误的"
     

    2.MainModule上级目录

    +--Mian.py
    |
    +--package
        |
        +--a.py
           |
           +--class Module
        我的做法
    from package.a import Module
    from /.package.a import Module
    from .package.a import Module"是错误的"
     

    3.MainModule 下级目录

    +--package
    |    |
    |    +--Main.py
    |
    +--a.py
         |
         +--class Module
       我的做法  
    from app.a import Module
    from ..a import Module "在某种情况下是对的,但是单看Main在此类情况下是错的"
    

    4.MainModule 处于不同的package

    /app
      |
      +--package1
      |   |
      |   +--Main.py
      |
      +--package2
          |
          +--a.py
              |
              +--class Module
      我的做法
    from app.package2.a import Module
    
       

    5.万能法介绍

    /app
    |  |
    |  +--package1
    |  |   |
    |  |   +--Main.py
    |  |
    |  +--a.py
    |      |
    |      +--class Module
    |
    +--manage.py
    
         
    我的做法:
    "在manager中"
    from app.package.a import Module
    "在这种情况下,main.py中导入a 可以使用from ..a import Module"
    "如果真的无法判断如何导入的情况下,从Module和Main的父目录导入总是没错的"
    from a_parent.a && main_parent.a_parent.a import Module

     

总结:


  1. 我还是没有介绍相对导入和绝对导入,自己谈的东西,还是很浅薄的一层,只是现在够用而已。
  2. 事无小事,平常如果就有注意到细节的话,这写东西在用到的时候就不会耽误自己那么久的时间去寻找答案。



引用:

2018年3月26日星期一

START


  • 一定,每个星期都要写个心得(flag在此立下)
  • 不过,这blog的代码如何插入呢。。。。研究一下

这是google-code-prettify解决方案:

    直接导入样式
    <script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'/>
    <script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=js&skin=sons-of-obsidian'/>

    之后就可以在标签下使用了
    class Main(object):
        def test(name):
            print('hello world %s'% name)
    
    if __name__ == '__main__':
        m = Main
        m.test(name='kaisen')
    from time import time
    
    
    class Camera(object):
        """An emulated camera implementation that streams a repeated sequence of
        files 1.jpg, 2.jpg and 3.jpg at a rate of one frame per second."""
    
        def __init__(self):
            self.frames = [open(f + '.jpg', 'rb').read() for f in ['1', '2', '3']]
    
        def get_frame(self):
            return self.frames[int(time()) % 3]
   <pre class="prettyprint lang-* linenums> 参数意义
    lang-* : 接语言
    linenums : 显示行号


心得:

    1.干特娘的排版布局,以后写时,注意布局,而且先写文,后插入代码
    2.google-code-prettify在这里无法表现出html文本,可能是模板的原因


引用:

    官方给出的skin方案:
     https://rawgit.com/google/code-prettify/master/styles/index.html
    指导blog:
    1. https://fantasticnote.blogspot.com/2016/08/blogger-code-highlight.html
    2. https://blog.csdn.net/u011127019/article/details/77165062