[Python Basics]引用系统(The Import System)
欲上高楼去避愁,愁还随我上高楼。经行几处江山改,多少亲朋尽白头。
归休去,去归休。不成人总要封侯?浮云出处元无定,得似浮云也自由。
我从短暂的Python工作当中学到一件事,越是模块化,就越会发现python看似普通的import是大有玄机的。
- python引用python文件时的搜索路径往往都是当前terminal的pwd。(可以在sys还是os模块下append预期的路径)
- python在引用文件是看起来有点像是执行了一遍那个文件。
- python的相对路径真的限制好多,在我看来似乎是在套娃的时候才能用?
所以啊,我不作不明白Python引用机制的人啦!JOJO!

从Python Software Foundation学习到的引用系统(ImportSystem):
当一个import命令被执行的时候,程序将执行标准库中的__import__()函数。值得注意的是如果使用importlib.import_module()可以绕过该函数使用自己的引用机制。
当一个模块被第一次引入的时候,Python会查找该模块,如果找到的话就会创建一个模块对象(module object)。否则raise ModuleNotFoundError
Package
Python中Package的概念是用来管理纷繁的模块的结构化的。一般的理解是Package是一个文件夹,而Module是一个单独的文件。但其实Package只是Module的子类,唯一的区别是Package具有一个Module不具有的变量__path__
从Package中引入子包(subpackage)的时候主包(parent package)的__init__.py也会被执行(想要拿到小套娃必须打开大套娃的概念)
这是一个例子
parent/
__init__.py
one/
__init__.py
two/
__init__.py
three/
__init__.py
如果我们执行import parent.one时我们会先执行parent.__init__.py然后再执行one.__init__.py.
命名空间包
(啊,看到这个namespace就一个头两个大)

命名空间是对python中对象的索引系统。命名空间包主要解决的是程序目标模块不当前文件系统(以压缩包、网络位置等形式存在)的情况。目前没有遇到过这种应用环境,就先不详细理解了。
模块查找
这块是比较重要的┗|`O′|┛ 嗷~~
这个包已经引入了呦
所有已经引入的包都在sys.modules储存着从而避免重复导入。
看到目前为止,我的疑惑还没有解答。。。但已经很困了,有缘再来系列?
[Python Basics]引用系统(The Import System)的更多相关文章
- Python获取当前系统时间
Python获取当前系统时间 import time #返回当前时间 def GetNowTime(): return time.strftime("%Y-%m-%d %H:%M:% ...
- 关于python如何引用excel文件
关于python如何引用excel文件 import pandas as pd #引用pandas库,as:将pandas简写为pd Nowcoder = pd.read_excel("1. ...
- Python语法31[module/package+import]
一 module 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc" ...
- 课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 3、Python Basics with numpy (optional)
Python Basics with numpy (optional)Welcome to your first (Optional) programming exercise of the deep ...
- 关于Python Package下的Module import方式[转]
2012年有一个目标我没有达成,那就是深入学习和使用Python语言.这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^. 近期恰逢有一些Python工程的开发工作要做,就 ...
- 在python中引用jar包
在本文中,首先创建一个maven项目,然后打包成jar包,在python中调用jar包,执行java类方法. 1.在eclipse中创建maven项目 我这里创建一个普通java项目,择选择 “mav ...
- 笔记-Python-language reference-5.the import system
笔记-Python-language reference-5.the import system 前言 经常用到import,module,对其中的机制及原理有一定的了解,但没有将各种信息前后连通起来 ...
- python基础--自定义模块、import、from......import......
自定义模块.import.from......import...... 1)模块的定义和分类 1.模块是什么? 我们知道一个函数封装了一个功能,软件可能是有多个函数组成的.我们说一个函数就是一个功能, ...
- 疯狂java笔记(五) - 系统交互、System、Runtime、Date类
一.程序与用户交互(Java的入口方法-main方法): 运行Java程序时,都必须提供一个main方法入口:public static void main(String[] args){} publ ...
随机推荐
- maven打包记录1
在需要打包的项目目录下找到pom.xml文件 (过程中可能遇到 :-Dmaven.multiModuleProjectDirectory system property is not set. Che ...
- tensorflow中的学习率调整策略
通常为了模型能更好的收敛,随着训练的进行,希望能够减小学习率,以使得模型能够更好地收敛,找到loss最低的那个点. tensorflow中提供了多种学习率的调整方式.在https://www.tens ...
- PowerMock学习之PoweMock的入门(二)
前言 在上一篇<PowerMock学习之PoweMock的入门(一)>文章中,已经简单提及一些关于powermock的用法,但是入门还未完,我还要坚持把它学习并坚持更新到博客中. Mock ...
- spark-宽依赖和窄依赖
一.窄依赖(Narrow Dependency,) 即一个RDD,对它的父RDD,只有简单的一对一的依赖关系.也就是说, RDD的每个partition ,仅仅依赖于父RDD中的一个partition ...
- lqb 基础练习 特殊的数字
基础练习 特殊的数字 时间限制:1.0s 内存限制:512.0MB 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3.编程求所有 ...
- centos7清理矿机木马qw3xT,kpgrbcc
腾讯云报告了root口令被暴力破解,并种了木马kpgrbcc 昨晚找到/usr/bin/ rm -rf kpgrbcc 删除 rm -rf kpgrbcb 删除 并ps -ef | grep kpg ...
- 扛把子组Scrum立会报告+燃尽图 07
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/8684 一.小组情况组长:迟俊文组员:宋晓丽 梁梦瑶 韩昊 刘信鹏队名:扛把 ...
- 执行yaml.load()出现警告信息:YAMLLoadWarning: callingyaml.load() without Loader=..
执行yaml.load()出现警告信息:YAMLLoadWarning: callingyaml.load() without Loader=... 原因: yaml5.1版本后弃用了yaml.loa ...
- 一篇文章搞定Python多进程(全)
1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Proce ...
- Navicat Premium 12连接ubuntu18 ,Mysql 5.7.27-0
1,搭建好mysql服务器,cd /etc/mysql/mysql.conf.d,进入mysql配置目录,vim mysqld.cnf 2,注释掉,bind-address =127.0.0.1 , ...