学习日记0808

1 模块的循环导入问题

  出现的问题

   m1.py

   print('m1')

   from m2 import y

   x='m1'

   

   m2.py

   print('m2')

   from m1 import x

   y='m2'

    

   run.py

   import m1

  解决方案一:

  将导入的代码放到程序的最后面

  

   m1.py

   print('m1')

   x='m1'

      from m2 import y

   

   m2.py

   print('m2')

   y='m2'

   from m1 import x

    

   run.py

   import m1

  解决方案二:

   将导入的模块的代码放到函数中

    

   m1.py

   print('m1')

   def f1():

    print('执行了f1')

     from m2 import y

   x='m1'

   

   m2.py

   print('m2')

   def f1():

    print('执行了f2')

     from m1 import x

   y='m2'

    

   run.py

   import m1

   m1.f1

   m1.x

   m1.y

2 区分python文件两种用途

  当文件被执行的时候:__name__='__main__'

  但文件被调用的时候:__name__='模块名'

  在自定义模块的最后加

  if __name__ = '__main__':

    功能名()

    功能名()

3 模块的搜索路径

  模块搜索路径的优先级:

  1 内存中已经加载的

  2 内置的

  3 sys.path-------------第一个值是当前执行文件的所在目录

  调用模块时如何查找路径

  绝对导入

  方案一:

    import sys  

    sys.path.append('被调用模块的路径')

  方案二:

    from  第一级文件夹.第二级文件夹......... import 模块名

  优点:执行文件和自定义模块都可以使用

  缺点:必须以执行文件为准,导入麻烦

  相对导入

  参照当前文件为起始路径开始查找

  符号 . 表示当前文件夹 ..表示上级文件夹 ...表示上级的上级文件夹

  优点:导入简单

  缺点(也是注意点):相对导入只能在模块中使用,被执行文件中不能使用相对导入

软件开发的目录规范:

  ATM

    bin  存放可执行文件(整个程序的入口)

    conf 配置文件

    lib  自定义模块文件

    core 逻辑文件

    log  日志文件

    db  数据库文件

    Readme  软件的说明

原文地址:https://www.cnblogs.com/jianhaozhou/p/9442819.html