Python 包(package)
在比较大型的项目中常常需要编写、用到大量的模块,此时我们可以使用包(Package)来管理这些模块。
(一)什么是包?
Python包,就是里面装了一个__init__.py文件的文件夹。
__init__.py文件(前后各有 2 个下划线‘__’)具有下面4个性质
1.它本身是一个模块;
2.这个模块的模块名不是__init__,而是这个包的名字,也就是装着__init__.py文件的文件夹的名字。
3.它的作用是将一个文件夹变为一个Python模块
4.它可以不包含代码,不过此时仅仅用import [该包]形式是什么也做不了的。所以一般会包含一些Python初始化代码,在这个包被import的时候,这些代码会自动被执行。
5.第4点所指的初始化代码类型一:批量导入我们需要用到的模块,这样我们就不用在用到的时候再一一导入,方便实用。
6.第4点所指的初始化代码类型二:如果我们要使用“from pacakge_1 import *”的形式导入一个模块里面的所有内容,则需在__init__.py中加上“all = [‘file_a’, ‘file_b’]”。其中,package_1下有file_a.py和file_b.py。
7.不建议在__init__.py中写类,以保证该py文件简单。
__all__是Python中的一个重要的变量,放在__init__模块中,用于指定此包(package)被import *时,哪些模块(module)会被import进当前作用域中。不在 __all__列表中的模块不会被其他程序引用。我们可以对 __all__进行重写。
__path__也是python中的一个常用变量,它是储存着当前包内的搜索路径的一个列表。默认情况下只有一个元素,即当前包(package)的路径。
Python包具有下面3个性质:
1.它实质上是一个文件夹;
2.该文件夹里面一定有__init__.py模块,其他的模块可以有也可以没有;
3.它的本质依然是模块,因此一个包里面还可以装其他的包。
(二)导入包
导入包的方法和导入模块比较类似,只不过由于层级比一般模块多了一级,所以多了一条导入形式:
1.import 包名[.模块名 [as 别名]]
2.from 包名 import 模块名 [as 别名]
3.from 包名.模块名 import 成员名 [as 别名]
我们在导入包的时候,实际上是导入了它的__init__.py文件文件。
Python 包(package)的更多相关文章
- [Python]Python中的包(Package)
		
参考官方文档中的Module和Glosssary中的描述.Module: https://docs.python.org/3/tutorial/modules.html#packagesGlossar ...
 - Python入门之PyCharm中目录directory与包package的区别
		
对于Python而言,有一点是要认识明确的,python作为一个相对而言轻量级的,易用的脚本语言(当然其功能并不仅限于此,在此只是讨论该特点),随着程序的增长,可能想要把它分成几个文件,以便逻辑更加清 ...
 - Python(模块(modue)、包(package))
		
''' 一 模块 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块两种执行方式: 1 用于启动执行 2 用于被调用执行 key:import module: 将执行文件(mod ...
 - python入门-PyCharm中目录directory与包package的区别及相关import详解
		
一.概念介绍 在介绍目录directory与包package的区别之前,先理解一个概念---模块 模块的定义:本质就是以.py结尾的python文件,模块的目的是为了其他程序进行引用. 目录(Dict ...
 - 21.python的模块(Module)和包(Package)
		
目录 模块(Module)和包(Package) 模块(modue)的概念 模块导入方法 1.import 语句 2.from-import 语句 3.from-import* 语句 4.运行本质 i ...
 - python 包(package)和模块(module)的创建和引入(import)
		
python 包(package)和模块(module)的创建和引入(import) 名词解释 实际上,Python中的函数(Function).类(Class).模块(Module).包库(Pack ...
 - Python的包package的导入与被导入(包的类和方法的导入,__init__()怎么写)
		
包package的导入与被导入: 参考一下: https://blog.csdn.net/guowujun321/article/details/80764468 1.文件目录: | |-- A/ ...
 - 【转】linux和windows下安装python集成开发环境及其python包
		
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
 - python 包管理工具
		
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
 
随机推荐
- Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)
			
自2019年10月首次发布以来,Dapr(Distributed Application Runtime,分布式应用运行时)因其"更稳定"."更可靠".&quo ...
 - window环境导入odbc数据源
			
<ODBC指南>中只介绍了window环境如何配置odbc数据源,但是没有介绍如何导入数据源驱动,这里做个补充. 在没有导入数据源驱动之前,按照文档操作是查不到kingbaseES的odb ...
 - kingbaseES V8R3数据安全案例之---审计记录清除案例
			
 案例说明: 对于KingbaseES V8R3数据库,默认用户无权限删除审计记录,只有对审计记录做了转储以后会自动清理审计记录. 适用版本: KingbaseES V8R3 本案例数据库版本: S ...
 - 新增 Oracle 兼容函数-V8R6C4B0021
			
KingbaseES V8R6C4B0021新增加以下Oracle 兼容函数. 一.bin_to_num Oracle bin_to_num 函数用于将二进制位转换成十进制的数. 1.传入参数 tes ...
 - 优化器Optimal
			
未完成!!!!!! 神经网络的训练主要是通过优化损失函数来更新参数,而面对庞大数量的参数的更新,优化函数的设计就显得尤为重要,下面介绍一下几种常用的优化器及其演变过程: [先说明一下要用到符号的含义] ...
 - 1000粉!使用Three.js实现一个创意纪念页面 🏆
			
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 不知不觉,掘金关注者人数已经超过 1000 人,因此特地做了这个页面纪念一 ...
 - 采用docker方式安装ElastAlert,图形化配置告警规则----具体内容有删改,仅供查看
			
1.创建几个文件夹保存ElastAlert相关配置信息,用来挂载到容器中使用 2.编写核心配置,创建 ${ELASTALERT}/config/config.yaml用来存储核心配置: 3.Elast ...
 - Logstash:为 Logstash 日志启动索引生命周期管理
			
文章转载自:https://elasticstack.blog.csdn.net/article/details/110816948
 - 线程池底层原理详解与源码分析(补充部分---ScheduledThreadPoolExecutor类分析)
			
[1]前言 本篇幅是对 线程池底层原理详解与源码分析 的补充,默认你已经看完了上一篇对ThreadPoolExecutor类有了足够的了解. [2]ScheduledThreadPoolExecut ...
 - 为什么同行业,同个软件,有些 ERP 成功,有的失败了?
			
企业的差异性是各类系统部署必须正视的关键问题!同行业,同个软件,有些 ERP 成功,有的失败,基本上是企业差异性没有得到重视的,所以一点也不应该感到奇怪.规模不同.行业不同.发展阶段不同.生产模式不同 ...