第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 ...
随机推荐
- 揭秘仿比心app源码的开发背后,功能是如何实现的
约单陪玩系统作为最近兴起的开发热点,引起了竞相开发,其中比心源码可以说是行业内运营级别的APP中功能比较齐全的,那么仿比心app源码的功能是如何实现的呢,接下来就带大家简单分析一下. 仿比心app源码 ...
- “谈谈MySQL的基数统计”
** 目录 推荐阅读原文链接 一.基数是啥? 二.InnoDB更新基数的时机? 三.基数是估算出来 四.持久化基数 四.如何主动更新基数? Hi,大家好!我是白日梦. 今天我要跟你分享的话题是:&qu ...
- 论文解读 - Relational Pooling for Graph Representations
1 简介 本文着眼于对Weisfeiler-Lehman算法(WL Test)和WL-GNN模型的分析,针对于WL测试以及WL-GNN所不能解决的环形跳跃连接图(circulant skip link ...
- SpringBoot+MySQL,如何整合并使用MyBatis框架
概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis 可以使用简单的 ...
- 全文思维导图------redis设计与实现
- JAVA注解的继承性
摘要 本文从三个方面介绍java注解的**"继承性"**: 基于元注解@Inherited,类上注解的继承性 基于类的继承,方法/属性上注解的继承性 基于接口的继承/实现,方法/属 ...
- Python博文_爬虫工程师是干什么的
程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚"你是干什么的"也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下 ...
- 一些 git 常用的命令
1.本地命令 查看状态 -git status 添加文件 -git add . 提交文件 -git commit -m "(comment)" 查看历史key -git reflo ...
- 精尽MyBatis源码分析 - MyBatis初始化(二)之加载Mapper接口与XML映射文件
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 记php多张图片 合并生成竖列 纵向长图(可用于商品详情图合并下载)
<?php namespace app\mapi\common\image; /** * 拼接多幅图片成为一张图片 * * 参数说明:原图片为文件路径数组,目的图片如果留空,则不保存结果 * * ...