第十九章:模块和包-importlib:Python的导入机制-模块类型

19.1.2 模块类型
Python支持多种类型的模块。打开模块并将其增加到命名空间时,每种类型的模块都需要它自己的处理,另外不同平台对格式的支持也有所不同。例如,在Microsoft Windows下,共享库从扩展名为.dll或.pyd的文件加载,而不是.so。使用解释器的调试(debug)构建版本而不是普通的发行(release)构建版本时,C模块的扩展包也可能改变,因为这些扩展包在编译时可能还包含调试信息。如果一个C扩展库或其他模块不能按预想的那样正常加载,则可以使用importlib.machinery中定义的常量来查找当前平台支持的类型,以及相应的加载参数。

import importlib.machinery

SUFFIXES = [
    ('Source:',importlib.machinery.SOURCE_SUFFIXES),
    ('Debug:',
     importlib.machinery.DEBUG_BYTECODE_SUFFIXES),
    ('Optimized:',
     importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES),
    ('Bytecode:',importlib.machinery.BYTECODE_SUFFIXES),
    ('Extension:',importlib.machinery.EXTENSION_SUFFIXES),
    ]


def main():
    tmpl = '{:<10} {}'
    for name,value in SUFFIXES:
        print(tmpl.format(name,value))


if __name__ == '__main__':
    main()

返回值是一个元组序列,其中包含文件扩展名,打开文件(包含有模块)所用的模式,以及一个类型码(来自模块中定义的一个常量)。下面的表并不完备,因为有些可导入的模块或包类型并不对应单个文件。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值