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直接就过去了:需要再跳回来:
随机推荐
- Weblogic 连接 RMI 服务报错 Connection refused
WebLogic 连接 RMI 服务报错 Connection refused 访问 WebLogic RMI 服务报错,连接被拒绝,连接超时. 奇怪的是,报错的 host 根本不是我要访问的. 报错 ...
- SCOI2020迷惑记
睡了个好觉还是很困但没咋吃饭就出门了. 到了之后随便跟认得到的人扯了两句就进去了. 结果让我们站在外面等... 然后通知说不能自带水和吃的那我这个中午没吃饭的咋整啊. 马上啃了半块巧克力就进了考场,然 ...
- 2020重新出发,JAVA语言,什么是JAVA?
@ 目录 什么是 java? JAVA三大体系 Java SE Java EE JavaME java的主要特性和优势 1. 面向对象 2. 平台无关性 3. 可移植性 4. 简单性 5. 解释执行 ...
- JS中splice方法的使用
在js中,arr.splice(str)方法是处理数组的利器,利用它可以实现在指定位置删除.替换.插入指定数量的元素. 其语法为: arr.splice(index[, deleteCount, e ...
- OGG复制进程延迟高,优化方法一(使用索引)
日常运维过程中,可能发现OGG同步进程延迟很高: 本篇介绍其中的一种方式. OGG复制进程,或者说同步进程及通过解析ogg trail文件,输出dml语句,在目标库执行dml操作,那么延迟高可能性其一 ...
- JavaScript Array.map + parseInt
map 生成新数组的函数,3个参数 1-currentValue, callback数组中正在处理的当前元素 2-index(可选): callback数组中正在处理的当前元素的索引 3-array( ...
- keil 5.29 无法找到 flash的算法文件
安装5.29之后,发现编译文件可以,但是Debuger下的flash download找不到对应的flash文件 解决, 重新 安装keil5.29时,PACK的目录选择安装在Keil同级目录下的AR ...
- JDK8 String类知识总结
一.概述 java的String类可以说是日常实用的最多的类,但是大多数时候都只是简单的拼接或者调用API,今天决定深入点了解一下String类. 要第一时间了解一个类,没有什么比官方的javaDoc ...
- 【特别篇】不为人知的U盘秘密
U盘是我们代码爱好者的必要东西,方便于我们更好的拷文件,使用一些已经配置好的东西,比如说:小编经常会将linux系统放进去,平时就可以随时用了. But 你的U盘真的正常吗?你了解多少? 关于U盘 ...
- 当Notification和Websocket遇到https、http
@ 目录 一.http转为https请求 (1)生成证书1(crt证书转tomcat使用的jks) (2)配置证书1 (3)生成证书2 (4)配置证书2 二.Websocket改为https连接 后言 ...