Python学习笔记7 头文件的添加规则(转载)

转载自:https://www.cnblogs.com/taurusfy/p/7605787.html

 

***************************************************************************************************

以下是正文:

一个python项目中一个文件需要引用另一个文件中的类,遇到的几个问题,总结如下:

  • 情况一:在同一目录下

目录结构:

   |--a.py
   |--b.py
   |--main.py

  

在main.py中,需要引用a.py和b.py中的类:

from a imoport *
from b imoport *

  

  • 情况二:主路径下调用子文件夹中的类

目录结构:

   |--a
       |---a.py
   |--b
       |---b.py
   |--main.py

  

在main.py中,需要引用a.py和b.py中的类,a,b为文件夹。但是直接这样引用会报错

from a.a imoport *
from b.b imoport *

  

解决方法是在a,b文件夹中增加 __init__.py 文件

目录结构:

   |--a
       |---__init__.py
       |---a.py
   |--b
       |---__init__.py
       |---b.py
   |--main.py

  

  • 情况三:不同文件夹之间的调用

目录结构:

   |--a
       |---__init__.py
       |---a.py
   |--b
       |---__init__.py
       |---b.py
   |--main.py

  

b中调用a中的类,或者a中调用b中的类

在b.py中

import sys
sys.path.append('E:\\testnow\\project\\a')
import a

  

linux和window的路径格式不一样,该方法适用于所有跨文件夹调用情况,但要注意路径格式。

 

  • 文件调用时出现的同一模块重复调用问题

目录结构:

|--a
    |---__init__.py
    |---a.py
|--b
    |---__init__.py
    |---b.py
|--main.py

  

比如a.py中调用了

from time import * 
from datetime import datetime

  

而且main.py中import了a:

from a.a import *

  

那么main.py中可以直接使用time(),datetime()相关函数,不需要再import了

此时如果main.py中 import time,并且这样调用相关函数time.time() 或time.sleep(1) ,会出现报错。

即使重复调用时,也要保证调用的一致性。

posted @ 2018-04-19 21:28  路边的十元钱硬币  阅读(189)  评论(0编辑  收藏  举报