在比较大型的项目中常常需要编写、用到大量的模块,此时我们可以使用包(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)的更多相关文章

  1. [Python]Python中的包(Package)

    参考官方文档中的Module和Glosssary中的描述.Module: https://docs.python.org/3/tutorial/modules.html#packagesGlossar ...

  2. Python入门之PyCharm中目录directory与包package的区别

    对于Python而言,有一点是要认识明确的,python作为一个相对而言轻量级的,易用的脚本语言(当然其功能并不仅限于此,在此只是讨论该特点),随着程序的增长,可能想要把它分成几个文件,以便逻辑更加清 ...

  3. Python(模块(modue)、包(package))

    ''' 一 模块 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块两种执行方式: 1 用于启动执行 2 用于被调用执行 key:import module: 将执行文件(mod ...

  4. python入门-PyCharm中目录directory与包package的区别及相关import详解

    一.概念介绍 在介绍目录directory与包package的区别之前,先理解一个概念---模块 模块的定义:本质就是以.py结尾的python文件,模块的目的是为了其他程序进行引用. 目录(Dict ...

  5. 21.python的模块(Module)和包(Package)

    目录 模块(Module)和包(Package) 模块(modue)的概念 模块导入方法 1.import 语句 2.from-import 语句 3.from-import* 语句 4.运行本质 i ...

  6. python 包(package)和模块(module)的创建和引入(import)

    python 包(package)和模块(module)的创建和引入(import) 名词解释 实际上,Python中的函数(Function).类(Class).模块(Module).包库(Pack ...

  7. Python的包package的导入与被导入(包的类和方法的导入,__init__()怎么写)

    包package的导入与被导入: 参考一下: https://blog.csdn.net/guowujun321/article/details/80764468 1.文件目录: | |--  A/ ...

  8. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  9. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

随机推荐

  1. 《网页设计基础——CSS常用语法》

    网页设计基础--CSS常用语法       一.注释: 例如: /* 在此处书写注释 */     二.清除浏览器默认设置: 例如: *{ /* 全局声明 */ margin: 0; padding: ...

  2. 前端安全配置xss预防针Content-Security-Policy(csp)配置详解

    文章转载自:https://www.xaheimi.com/jianzhan/117.html 什么是Content Secruity Policy(CSP) CSP全称Content Securit ...

  3. Logstash: 启动监控及集中管理

    在本篇文章里,我将详细介绍如果启动Logstash的监控及集中管理. 前提条件 安装好Logstash,设置Elasticsearch及Kibana的安全密码. 如何监控Logstash? 我们安装如 ...

  4. python 代码执行顺序

    Python代码在执行过程中,遵循下面的基本原则: 普通语句,直接执行: 碰到函数,将函数体载入内存,并不直接执行 碰到类,执行类内部的普通语句,但是类的方法只载入,不执行 碰到if.for等控制语句 ...

  5. 前端ES6 面试过关宝典

    ES6 部分 Typescript 部分 前端工程面经(节流防抖.https.前端攻击.性能优化...) https://juejin.cn/post/6844903734464495623 ES6面 ...

  6. switch分支

    说明: 当表达式的值等于case中的常量,则会执行其中包含的语句块 break用于跳出循环,如果不写,则直接执行下一个常量的语句块,不再去判断表达式的值是否等于下一个case的常量(case穿透) 最 ...

  7. 用AR Engine手部骨骼跟踪能力实现虚拟手表试戴

    AR技术的落地应用,推动着电商领域的不断升级,通过增强现实为用户带来了虚拟与现实结合的AR购物体验.如AR试衣.AR试鞋.AR试妆等功能的出现让用户在手机上就能体验产品的佩戴效果,可以让用户更直观.更 ...

  8. 支付宝沙箱服务 (结合springboot实现,这里对接的是easy版本,工具用的是IDEA,WebStrom)

    一:打开支付宝开发平台,登录,然后点击控制台 https://open.alipay.com/ 二:滚动到底部,选着沙箱服务 三:获取到对接要用的appId和公钥私钥 四:打开IDEA导入所需的xml ...

  9. 谣言检测(RDEA)《Rumor Detection on Social Media with Event Augmentations》

    论文信息 论文标题:Rumor Detection on Social Media with Event Augmentations论文作者:Zhenyu He, Ce Li, Fan Zhou, Y ...

  10. String简介

    String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的.实现了 ...