模块和包

包和模块:

包(lib):通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。

在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。

小结:

1). import PackageA.SubPackageA.ModuleA,使用时必须用全路径名

2). 变种: from PackageA.SubPackageA import ModuleA, 可以直接使用模块名而不用加上包前缀。

3). 也可以直接导入模块中的函数或变量:from PackageA.SubPackageA.ModuleA import functionA

模块(module):模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用模块名(.)函数名,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name理解为名字限定符。模块名就是文件名去掉.py后缀

每个模块都有自己的私有符号表,所有定义在模块里面的函数把它当做全局符号表使用。

模块可以导入其他的模块。通常将import语句放在模块的开头,被导入的模块名字放在导入它的模块的符号表中。from module import names  可以直接从模块中导入名字到符号表,但模块名字不会被导入。

from module import *     可以把模块中的所有名字全部导入,除了那些以下划线开头的名字符号。不建议使用,不清楚导入了什么符号,有可能覆盖自己定义的东西

内建函数dir()可以查看模块定义了什么名字(包括变量名,模块名,函数名等):dir(模块名),没有参数时返回所有当前定义的名字

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 封装包很简单。在文件系统上组织代码,并确保每个目录都定义了init.py文件 (http://upload-ima...
    开罗酒吧阅读 288评论 0 0
  • 模块和包 模块 一个模块就是一个包含python代码的文件。一个文件就是一个模块 为什么要使用模块? 如何定义自己...
    胖腚猴阅读 232评论 0 0
  • 查看 python 已安装的模块 注:安装 pip 的命令 好像最后不管用,调试通了再来改吧== 主入口 防止模块...
    爱吃葡萄冰的鲸阅读 256评论 0 0
  • 类 类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。 模块 模块,在Python可理...
    随风化作雨阅读 1,990评论 0 5
  • Python类、模块、包的区别 类类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。模...
    周倜吉阅读 5,372评论 0 3

友情链接更多精彩内容