美文网首页
编程语言之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