美文网首页
编程语言之Python(二) - 模块和包

编程语言之Python(二) - 模块和包

作者: ElliotG | 来源:发表于2020-05-21 22:01 被阅读0次

1. 模块(module)

对于大型项目,需要组织类之间的结构。

什么是模块?
简单来说,模块就是一个Python文件,仅此而已。

模块名全部采用小写,用下划线分割。
(eg: game_main, game_register)

举例说明:
假设我们有一个database.py模块,其中包含一个Database类。另外我们有一个product.py模块。product.py模块需要依赖Database类。

我们可以有几种写法。

写法1(模糊导入):

import database

db = database.Database()

写法2(精确导入类):

from database import Database

db = Database()

写法3(精确导入+别名):

from database import Database as DB

db = DB()

一次导入多个类

from database import Database, Query

导入模块中所有类和函数

from database import *

 

2. 包(package)

包就是目录。
但是它和目录的区别是:

  • 包是一个目录下模块的集合
  • 包目录下必须存在一个空的文件init.py(没有这个文件我们无法从目录导入模块)

包名全部采用小写,不用下划线,层级包名用.号分割。
(eg: com.genesis, com.genesis.infra)

一个例子:

代码目录层级

door_dir/
    main.py
    ecommerce/
        __init__.py
        database.py
        products.py
        payments/
            __init__.py
            alipay.py

几种导入方式

绝对导入:
import ecommerce.products

product = ecommerce.products.Product()

或者

# 推荐
from ecommerce.products import Product

product = Product()

或者

from ecommerce import products

product = products.Product()
相对导入(推荐):

我们想在products模块中导入database相关类,由于它们是同级目录,可以这样:

from .database import Database

db = Database()

如果我们的位置是在alipay.py中,由于database.py是它的上级目录中的文件,需要这样:

from ..database import Database

注意: 我们可以用更多的点号来访问更上层的模块,例如三个点代表上上级目录。

相关文章

网友评论

      本文标题:编程语言之Python(二) - 模块和包

      本文链接:https://www.haomeiwen.com/subject/tvqxahtx.html