Python基础-入门之路PYTHON-包 相对导入&绝对导入
什么是包
包也是一种模块,但本质上就是一个文件夹
对于使用者而言 使用方式和模块没有任何区别
本质上就是一个文件夹 不同之处在于 多了一个__init__.py 叫包的初始化文件 import导入模块时发生了三件事情
1.创建名称空间
2.执行模块py文件 加载名称
3.在执行文件产生新的名称 指向模块 在导入包的时候 由于包实际上是一个文件夹 不能被执行 所以包中需要提供__init__.py文件
该文件用于代表这个包
所以上面import pack 实际上时执行了pack下的__init___.py 导入了这个名称 __init__.py文件的作用? ******
说白了就是导入该包下的所有模块 这样一来使用包的人 用起来非常简单 无需关心包中的文件结构
只要导入了包 就能使用包中的所有功能
__init__.py 应该包含什么内容?
不应该包含任何的业务逻辑 仅仅用于导入包中的模块 # 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
# 优点: 执行文件与被导入的模块中都可以使用
# 缺点: 所有导入都是以sys.path为起始点,导入麻烦 from dir0.dir1 import m1 # 执行文件中只能用绝对导入
m1.f1() # 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
# 符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
# 优点: 导入更加简单
# 缺点: 只能在导入包中的模块时才能使用,不能在执行文件中用 #注意:
# 1. 相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
# 2. attempted relative import beyond top-level package # 试图在顶级包之外使用相对导入是错误的,
# 言外之意,必须在顶级包内使用相对导入,每增加一个.代表跳到上一级文件夹,而上一级不应该超出顶级包
Python基础-入门之路PYTHON-包 相对导入&绝对导入的更多相关文章
- Python基础入门(模块和包)
1 模块 1.1 什么是模块 在 Python 中,一个 .py 文件就称之为一个模块(Module). 我们学习过函数,知道函数是实现一项或多项功能的一段程序 .其实模块就是函数功能的扩展.为什么这 ...
- Python基础入门教程,Python学习路线图
给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...
- python基础入门教程《python入门经典》
第一章 在python中使用数字 1.用变量存储信息 1.1变量的类型 变量,用于存储很多不同的数据类型的信息. 基本数据类型 数据类型 存储内容 示例 integer 整 float 浮点 ...
- Python基础入门教程
Python基础入门教程 Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循 ...
- Python基础入门总结
Python基础入门教学 基础中的基础 列表.元组(tuple).字典.字符串 变量和引用 函数 python视频教程下载 基础中的基础 解释型语言和编译型语言差距: Python概述 解释器执行原理 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python怎么样入门?Python基础入门教程
给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...
随机推荐
- 伪触发 input file 的click事件
前端在做 input file 美化的时候,通常 把 input 定位position 到 已美化的按钮最上方 opacity: 0 HTML5时代,已有更方便的方法,点击美化按钮直接触发选择文件事件 ...
- 七、文件IO——I/O处理方式和文件锁
7.1 I/O 处理方式 7.1.1 I/O处理的五种模型 阻塞I/O模型 若所调用的 I/O 函数没有完成相关的功能就会使进程挂起,直到相关数据到达才会返回.如 终端.网络设备的访问. 非阻塞模型 ...
- Windows Docker Toolbox 安装Redis等开发环境
Redis作者不接受微软的补丁 Redis文档(https://redis.io/topics/quickstart) redis-server 是 Redis Server 本身 redis-sen ...
- 20155324 2016-2017-2 《Java程序设计》第十周学习总结
20155324 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. ...
- sql leetcode -Duplicate Emails
第一种解法: select distinct p1.Email as Email from Person p1, Person p2 where p1.Email=p2.Email and p1.Id ...
- cpp 常量函数(函数后加const)
const用在成员函数后 主要是针对类的const 对象 如: class Text{ public: void printconst(void)const{cout<<" ...
- Socket与TCP,UDP
什么是socket 简单来说是IP地址与端口的结合协议(RFC 793) 一种地址与端口的结合描述协议 TCP/IP协议的 相关API的总称:是网络api的集合实现 涵盖了:Stream Socket ...
- link标签和css引入方式
link常见用途 <link> 标签最常见的用途是链接样式表,在 HTML 中,<link> 标签没有结束标签,此元素只能存在于 head 部分,不过它可出现任何次数. < ...
- Handler的postDelayed的实现方法
暂存,待归纳 https://www.jianshu.com/p/f5f710d55255 https://blog.csdn.net/qingtiantianqing/article/details ...
- vue组件监听不生效,比深度监听还管用哦
在Watch监听数组里面里加上 immediate: true, watch:{ myArrList:{ immediate: true, handler(curVal,oldVal){ consol ...