16_Python的包package
1.包的概述
1.包是将模块一文件夹的组织形式进行分组管理的方法,一系列模块进行分类管理有利于防止命名冲突
2.包是一个包含多个模块的特色目录,目录下有一个特色的文件__init__.py
3.包的命名规则和变量命名规则一样由字母数字和下划线且不以数字开头组成,推荐使用小写字母加_的命名方式
4.使用import包名可以一次导入包中的所有模块,也可以在需要时加载一个或部分模块而不是全部模块
5.在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表,即在__init__.py文件中写入import导入语句
2.包的导入语法
1.如果是直接导入一个包,那么相当于执行了这个包中的__init__文件
2.Python解释器并不会帮你把这个包下面的其他包以及py文件自动的导入到内存
3.如果希望直接导入包之后,所有的这个包下面的其他包以及py文件都能直接通过包来引用,那么要处理__init__文件
import 包名 # 相当于执行了包下面的__init__文件
import 包名 as 包别名
import 包名.模块名 as 模块新名
import 包名.子包名.模块名 as 模块新名
from 包名 import 模块名 as 模块新名
from 包名.子包名 import 模块名 as 模块新名
from 包名.子包名.模块名 import 属性名 as 属性新名
from 包名 import *
from 包名.模块名 import *
3.包目录下的__init__.py文件
__init__.py会在导入包时被自动调用,是常规包内必须存在的文件
__init__.py文件可以编写此包的内容,可以在内部添加包的文档字符串,可以加载此包所依懒的其它模块
4.包的__all__列表
1.用来记录此包中有哪儿些子包或模块需要导入,当用from 包名 import * 语句导入时,只查找__all__中的模块或子包
2.__all__列表只在from 包名 import *语句时起作用;当子包或子包内的模块被导入时,上一层的包也会被先导入
# 实质会先导入mypack,再导入games,再导入contra
import mypack.games.contra
5.包的相对导入
1.概述:
1.包的相对导入是指包内的模块的相互导入,导入时不能超出包的外部,要避免循环导入
2.相对导入路径:
在 from xxx import 语句中, xxx部分可以使用相对路径
. 代表当前目录
.. 代表上一级目录
... 代表上二级目录
.... 以此类推
2.语法:
from 相对路径包或模块 import 属性或模块名
from 相对路径包或模块 import *
16_Python的包package的更多相关文章
- (转)-编写第一个ROS(创建工作空间workspace和功能包package)
原文网址:http://www.cnblogs.com/liuamin/p/5704281.html 刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配 ...
- 编写第一个ROS(创建工作空间workspace和功能包package)
刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配置好ROS. 1.创建工作空间(workspace) 我们所创建功能包package,应该全部放到一个 ...
- Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...
- 模块(modue)和包(package)的概念-import导入模块
模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较 ...
- Java - 25 Java 包(package)
Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...
- Java学习笔记三十一:Java 包(package)
Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...
- ROS知识(3)----功能包package编译的两种方式
ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单:另一种是用catkin_make,这种方法更方便包的管理和开发.这两种方法都是先建立工作空间workspace(类似于vs下 ...
- Python(模块(modue)、包(package))
''' 一 模块 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块两种执行方式: 1 用于启动执行 2 用于被调用执行 key:import module: 将执行文件(mod ...
- IntelliJ IDEA 识别一个类所属的jar包package
IntelliJ IDEA 识别一个类所属的jar包package 按住ctrl,鼠标移动上去,不要点击: 有木有快捷键? ctrl+alt+B直接就过去了:需要再跳回来:
随机推荐
- day24:多态&魔术方法__new__&单态模式
目录 1.多态 2.__new__魔术方法 2.1 关于魔术方法__new__ 2.2 基本语法 2.3 __new__ 触发时机快于构造方法 2.4 __new__ 和 __init__ 参数一一对 ...
- Python自动化爬取App数据
基本环境配置 版本:Python3 系统:Windows 需要安装: 1.JDK - Download JDK,Appium要求用户必须配置JAVA环境, 否则启动Seesion报错. 很多人学习py ...
- 谈谈Nginx和php之间是交互与通信的方式
Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生.PHP也通过二十多年的发展来到了7系列版本,更加关注性能.这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标 ...
- JDK 1.8 中文 API CHM
链接: https://pan.baidu.com/s/1AiJn6RM1KoEL1n_96qoQhQ 提取码: n2ya
- C#LeetCode刷题之#852-山脉数组的峰顶索引(Peak Index in a Mountain Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4003 访问. 我们把符合下列属性的数组 A 称作山脉: A.le ...
- C#LeetCode刷题之#680-验证回文字符串 Ⅱ(Valid Palindrome II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3961 访问. 给定一个非空字符串 s,最多删除一个字符.判断是否 ...
- C#LeetCode刷题之#26-删除排序数组中的重复项(Remove Duplicates from Sorted Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3622 访问. 给定一个排序数组,你需要在原地删除重复出现的元素, ...
- 顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付
在日前的KubeCon 2020中国线上峰会上,VMware中国研发中心架构师.Harbor项目创始人和维护者张海宁,和网易数帆轻舟事业部架构师.Harbor维护者裴明明,共同分享了如何在多云和多集群 ...
- Jmeter 常用函数(2)- 详解 __RandomDate
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 产生一个随机日期 语法格式 ${__R ...
- golang container/list 使用
原文链接:http://cngolib.com/container-list.html(中文),https://golang.org/pkg/container/list/(英文) 示例: packa ...