第10.9节 Python子包的导入方式介绍
在《第10.8节 Python包的导入方式详解》详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同。本节对照二者的方式介绍子包与包导入的关系:
一、 所有《第10.8节 Python包的导入方式详解》介绍的包的导入方式子包都可以使用,但是包导入命令中的“包名”需要替换为“包名.子包”,如果是多层子包则对应路径全部要加进去;
二、 子包导入时,按包路径触发各层包的顺序加载,先加载包、然后路径上的第一层子包、第二层子包,…,一直到最终要加载的子包,请见下面的案例;
三、 子包导入时,如果将子包命名为别名,则子包下已导入成员的访问可以通过别名访问,但导入子包下未导入的模块时不能使用别名,这是因为别名实际上是给导入子包的一个命名为别名的名字空间,只能访问名字空间已经加载的成员。请看如下示例:
>>> import goodspricequery.dataaccess as dt #触发了包和子包的顺序加载
Start loading packeg:goodspricequery ...
Package goodspricequery loaded!Press Enter to exit.
Start loading dataaccess package ...
Package dataaccess loaded!
>>> import dt.goodstype #不能通过别名.模块加载模块,故本语句报错
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import dt.goodstype
ModuleNotFoundError: No module named 'dt'
>>>
四、 对子包的导入,以下方式是不允许的:
- from 包名.子包名 import 子包名
- from 包名 import 子包名
本节老猿结合包的导入对比介绍了子包的导入,子包也是包,包本质上也是模块,实际上导入没有根本区别,只是由于细节的不同而略有不同。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
第10.9节 Python子包的导入方式介绍的更多相关文章
- 第10.7节 Python包和子包的定义步骤
一. 包的定义步骤 按照包名创建或使用一个已有目录,目录名就是包名,必须注意包的目录必须位于Python加载模块的搜索路径中(具体请参考<第10.1节 Python的模块及模块导入>关于模 ...
- 第10.8节 Python包的导入方式详解
一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...
- 第10.6节 Python包的概念
一. 引言 在<第10.2节 Python的模块及模块导入>介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要 ...
- 第10.11节 Python模块和包小结
Python的模块就是一个独立的Python文件,Python的包是一些功能相关的Python文件放到一个目录下进行统一管理的文件管理结构,包本质上是模块,加载包就是加载包下特定的模块文件__init ...
- python 子包引用父包和其他子包
python 子包引用父包和其他子包 python引用子目录很简单, 里面放个__init__.py就可以了. 如何在子目录里面引用其他目录(父目录,爷目录和同辈分目录)呢? 例如: python有项 ...
- 第10.3节 Python导入模块能否取消导入?
模块导入后,是否可以取消导入?实际上当模块导入后,是无法逆向还原到导入前的状态的,但是可以利用"del 模块名"进行导入模块的删除,此时的删除只是删除了导入模块对应的模块变量名,删 ...
- 第10.4节 Python模块的弱封装机制
一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...
- python基础===包的导入和__init__.py的介绍
转自:https://www.cnblogs.com/botoo/p/8241522.html 调用同级目录: – src |– mod.py |– test.py 若在程序test.py中导入模块m ...
- python 的包的导入
已经写过一篇包的导入了,最近又遇到了点问题,所以想把这些再搞的明白点就又试了试 代码结构如下 在test目录下,有Admin包,home包,在home下有它的子包foo 各个文件代码如下 admins ...
随机推荐
- php生成gitbook路径
public function file_list() { $path='文件路径'; $arr=scandir($path); $i=0; foreach ($arr as $k=>$v) { ...
- webpack配置babel篇
babel-polyfill & babel-runtime & babel-preset-env babel-core babel-core 的作用是把 js 代码分析成 ast , ...
- 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...
- Table is marked as crashed and should be repaired 解决办法
遇到这个问题几个敲命令轻松搞定 1.首先进入mysql命令台: mysql -u root -p 回车 输入密码 2.查询所有的库 mysql> show databases; 3.进入数据库 ...
- vs code远程开发
VS Code如何配置远程开发 你是如何远程开发的?还在使用FTP/SFTP同步文件?那你out了,有了宇宙第一IDE:VS就不需要这么麻烦了,一起学习一下吧. 第一步,安装Remote SSH插件 ...
- 10大排序算法——Java实现
算法与实现 选择排序 算法思想 从数组中选择最小元素,将它与数组的第一个元素交换位置.再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置.不断进行这样的操作,直到将整个数组排序. 动 ...
- 用JavaScript做精灵图
用JavaScript做精灵图 精灵图可以不用在给每一个小块一 一的修改位置.主要原理是找到整张的背景图与li的下标的数学关系. 这是一大张背景图,这个背景图的位置其实是有规律的,每两张之间间隔一个固 ...
- fastapi+vue搭建免费代理IP网站部署至heroku
说明 最近需要用到一些HTTP的代理,用于爬虫去爬取信息,搜索了一些网站,貌似现在这类提供免费代理IP的网站很多,刚好最近看了点vue的视频,弄个网站练练. 部署到heroku,预览地址:点击这里 F ...
- MyBatis学习01
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- 在FL Studio中制作和优化人声和弦(Vocal Chords)
人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...