Python 模块导入 import ...\from... import...

28
五月
2021

代码越来越多的时候,我们将代码写到一个.py 文件里,随着代码的增加,代码的维护越来越困难。如果将代码按照不同的功能拆分放到不同的.py文件中,每个.py文件就是一个模块。

不同模块中的变量名可以相同,他们不会受影响。

在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。

包是带有__init__.py文件的文件夹。包必须有__init__.py文件,不然他就是个文件夹。

包是用来区分不同类型的模块,不同包中的模块名可以相同,他们不会相互受影响。当然包下可以还有包(子包),如同子文件夹。

com/                          顶层包
     __init__.py               初始化 com包
     requirements.txt          requirements 文件
     comtest.py               com 下comtest模块
     woodman/                com下的子包
             __init__.py
             woodtest.py
             ...
     gif/                     图片处理包
             __init__.py
             gifecho.py
             giftest.py       注意添加代码
             ...
     modle/                  modle子包
             __init__.py
             model.py

将代码添加到 giftest.py 中

# giftest.py  代码,添加到giftest.py  文件中
gif = '1.gif'
def add(a, b):
   print('add', a + b)
class giftest(object):
   def minus(self, a, b):
       print('giftest.minus', a - b)

一、import... as...

import 引入模块格式如下:

import 模块路径.文件名 as 别名

释:

当文件在当前目录下或PATH环境变量下,可以直接 【import 文件名】引入 ;否则要从项目根目录下开始指定路径。
别名,直接引入文件名可以不用别名,如果带模块路径引入最好加上别名,使用时通过 【别名. 】使用。

示例:

# woodtest.py 下引入manth
import math  # 引入math模块,系统自带模块都在PATH下
import com.gif.gifecho as gif  # 引入gifecho 模块,别名 gif

print(math.pi)  # 调用math模块中的pi常量
print(gif.__file__)  # 通过别名使用com.gif.gifecho模块

如果要同时导入多个模块,只需要在模块名之前用逗号进行分隔:

import module1,module2,module3.......

在用import语句导入模块时最好按照以下的顺序:

1、python 标准库模块
2、python 第三方模块
3、自定义模块

注意:官方不推荐 import module1,module2 同时引入多个模块,按代码规范每个模块使用一个 import 。

二、from ... import ...

from ... import ... 这种引入方式使用一个点号来标识引入类库的精确位置。

格式:

import 模块路径.文件名 import 变量名\函数\类名

注意:windows 系统不要使用相对路径。

示例:

# gifecho.py 下引入giftest 文件
from com.gif.giftest import *  # 引入giftest.py 下的全部
from com.gif.giftest import add  # 只引入add函数
from com.gif.giftest import giftest  # 只引入giftest类

print(gif)  # giftest.py 模块下的gif变量
add(1, 2)  # 使用giftest.py 模块下add函数
giftest = giftest()  # 实例化giftest.py 模块的giftest类
giftest.minus(2, 1)  # 调用了giftest类的方法

注意:from ... import ... as ... 也可以使用别名,单 import 导入的名称过长时,为了方便使用可以使用别名

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员