一、理解Python项目的组织结构

python项目分层ddd python 项目结构_Python

二、Python中导入其他模块

首先创建两个模块文件Python1.py和Python2.py作为被导入模块。

python项目分层ddd python 项目结构_Python_02


下面是在Python3.py模块中进行导入测试:

1.import引入模块

import只能引入模块,不能直接引入变量或者函数

import PythonFiles.Python1

print(PythonFiles.Python1.a)    #打印aaa

改进:由于多层包嵌套后引入名会过长,所以可以为其重命名

import PythonFiles.Python1 as PythonFile

print(PythonFile.a)     #打印bbb
2.from引入,可以引入模块或者变量函数
2.1只引入变量
from PythonFiles.Python1 import c

print(a) #打印aaa
print(b) #报错
2.2只引入某个模块
from PythonFiles import Python1

print(Python1.a)
print(Python1.b)
print(Python1.c)
3.3一次引入所有目标模块下的所有内容,效果同引入模块
from PythonFiles.Python1 import *

print(a)
print(b)
print(c)
3.4被导入文件限制可以被引入的内容

Python2.py中做了all内置属性:__all__ = ['num1'],这样可以规定外部的引入只能使用num1变量

from PythonFiles.Python2 import *
print(num1)
print(num2)#报错,num2 not defined
3.5引入多个变量需要换行的问题
#第一种换行
from PythonFiles.Python1 importa ,b, \
c

print(c)
#第二种换行:推荐使用
from PythonFiles.Python1 import(a ,b,
c)

print(b)

三、__init__.py文件应用

__init__.py文件存在包的根目录下,当这个包或者包中的任意模块被导入的时候,init.py中内容会首先自动被执行。

1.限制模块导入

在__init__.py中写入内置函数__all__,决定哪些模块可以被外部导入。比如在其中添加__all__ =[“Python1”]之后,再在python3模块中测试:

from PythonFiles import *

print(Python1.a)
print(Python2.num1) #报错
2.批量导入

多个模块文件都需要用到一些模块文件时,可以在一个包的__init__.py文件中引入需要的模块文件,然后多个模块就可以共用了。比如在PythonFiles的__init__.py文件中添加:import sys,然后可以在不同的文件中调用sys方法 :

import PythonFiles

print(PythonFiles.sys.path)

四、包和模块导入的特点

1.需要避免循环导入,两个或者多个模块文件互相导入会报错
2.Python在导入一个模块的时候,就会执行这个模块里的所有内容,但是多次导入只能执行一次。