Python中的模块

模块的概念

Python中的一个模块是一个文件。是一个命名空间,组织函数与类的地方。

导入模块时所发生的事(3件事)

  • 寻找模块路径,通过sys.path寻找模块路径。sys.path可静态配置,也可动态配置,动态配置指在模块的代码中添加sys.path.add(“模块路径”)。不过只在该模块载入运行时有效。静态配置指在程序的标准库的sitepackages目录中添加.pth文件和配置PYTHONPATH环境变量。
  • 编译成字节码,这个是可选的。
  • 运行,执行模块的代码。

模块搜索路径的组成

  • 程序的主目录
  • PYTHONPATH环境变量设置的路径
  • 标准链接库目录
  • 任何.pth文件的内容,一行一行列出目录
    其中1,3条是自动配置的。

重载模块带来的动态性

  • 能让程序在运行时被修改测试,比如更改了某一模块的文件,只需要调用reload重新导入模块,修改即生效,而不需要重新编译,节省大量时间。
  • 使用from导入模块中的变量名相当于变量名被深复制出来,所以重载模块不会影响到from导入的变量名,而用import导入的变量名由于用了点运算取出属性,所以会被影响到。

包导入

  • import和from能通过路径来导入模块,这被称为包导入,比如 import dir1.dir2.dir。就会从模块搜索路径搜索含有dir1的文件夹。再一步一步查找下去,直到找到dir。语法上用.代替了\。
  • 使用包导入的时候,必须遵循一条约束,导入包的路径中每个目录中必须有__init__.py文件。init文件替目录产生命名空间,目录的__all__属性就是所有目录下的模块__all__属性之和。
  • 包相对导入使用from. import 模块名导入同一目录下的模块名。import 模块名会在sys.path里面查找导入,但是当前工作目录是sys.path的第一条目录,所以import能导入同一目录下的模块名

使用模块的建议

  • 使用_x来命名变量,最小化from*的破坏,from*不会复制以_开头的变量名,from*会导入__all__列表中变量名。所以也可通过__all__赋值指定要复制的变量名。
  • 使用__name__进行测试,每个模块都有__name__内置属性,当模块被导入时,__name__被赋值为模块名,运行时被赋值为__main__。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值