主要引自:http://stackoverflow.com/questions/22185888/pythons-loader-what-is-it

What is __loader__?

__loader__是由加载器在导入的模块上设置的属性,访问它时将会返回加载器对象本身。

在Python版本3.3之前,__loader__在内置的导入机制中没有被设置(没有这个属性)。 相反,该属性只适用于使用自定义加载器导入的模块。

What is loader?

loader是由finder查找器返回的一个对象,它使用的它的load_module()方法来一个模块载入到内存中。例如:importlib.abc.Loader就是一个loader的抽象基类。

What is finder?

finder是一个对象,使用它的find_module()方法来尝试找到一个模块的加载器。例如:importlib.abc.Finder是finder的抽象基类。注意:然而它已经被弃用,最好使用importlib.abc.MetaPathFinder 和importlib.abc.PathEntryFinder。

How can I use it,if at all?

__loader__的主要用途是内省,然而,还有其他两种常见的用法:

  1. __loader__ 可以用于收集特定模块加载器上的数据。
  2. 在Python 3.3以前,这个属性可以用hasattr来检查这个模块是否是被内建的导入机制导入的。

如果hasattr(os,'__loader__')返回了True,这意味着os模块是使用自定义加载器导入的(内置的导入机制没有设置这个属性【也就是没有这个属性】)。 因为它没有,这意味着模块是使用内置的导入机制导入的。

下面这个是在Python 2.7.9 中运行de.py导入的变量。

下面这个是在Python 3.4.3中运行demo.py导入的变量

注意:由于PEP 302所做的更改,上述测试在Python 3.3+中不起作用。

Python之__loader__的更多相关文章

  1. 【Python五篇慢慢弹(4)】模块异常谈python

    模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...

  2. python import, from xx import yy

    区别: 用import modulexx/packagexx.moduleyy是导入某一模块,如果想引用模块的内容(class, method,variables...)必须用全名,即 [module ...

  3. python中的反射

    在绝大多数语言中,都有反射机制的存在.从作用上来讲,反射是为了增加程序的动态描述能力.通俗一些,就是可以让用户参与代码执行的决定权.在程序编写的时候,我们会写很多类,类中又有自己的函数,对象等等.这些 ...

  4. python基础之函数

    python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  5. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  6. Python基础四

    1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集   2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身 ...

  7. Python dir

    1. 在python命令行交互环境下,可以用dir()函数查看当前的变量,比如: >>> dir()['__builtins__', '__doc__', '__loader__', ...

  8. Python for Informatics 第11章 正则表达式六(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.7 调试 Python有一 ...

  9. 初始python第三天(三)

    全局变量与局部变量 1.什么是全局变量 在globals中的变量,都是全局变量,全局变量的作用域就是整个程序 NAME = 'alex' def global_test(): name = 'alex ...

随机推荐

  1. unity3D:游戏分解之曲线

    一提到曲线,很多新手就头疼了,包括我.查了很多资料,终于有个大概的了解.想深入了解曲线原理的,推荐一个链接http://www.cnblogs.com/jay-dong/archive/2012/09 ...

  2. linux-ubuntu下fastQC的安装

    1.fastqc是在Java环境下运行的:所以在安装fastqc之前,Linux下要有相应的Java运行环境(JRE).且java的版本应该在1.8.0版以上 2.java的安装:下载最新版本的Jav ...

  3. 编写一个简单的Web Server

    编写一个简单的Web Server其实是轻而易举的.如果我们只是想托管一些HTML页面,我们可以这么实现: 在VS2013中创建一个C# 控制台程序 编写一个字符串扩展方法类,主要用于在URL中截取文 ...

  4. mysql主键约束和唯一性约束

    主键约束和唯一性约束都是索引,它们的区别是: 主键字段可以确保唯一性,但主键字段不能为NULL. 唯一性约束可以确保唯一性,但唯一性约束的字段可以为NULL 唯一性约束对含有NULL的记录不起作用,即 ...

  5. 【基础】Asp.Net操作Cookie总结

    一.什么是Cookie? Cookie是存储在客户端文件系统的文本文件或客户端浏览器对话的内存中的少量数据.它主要用来跟踪数据设置,例如:当我们要访问一个网站网页的时候,用户请求网页时,应用程序可能会 ...

  6. 使用File、Path和Directory进行常见的操作

    我们偶尔会用到文件操作,其中File.Path和Directory这三个类是比较常见的,今天写了一个测试demo,也是顺便学习一下,记录一二. BTW,使用这几个类的时候需要引用using Syste ...

  7. Swift区间运算符

    Swift 提供了两个方便表达一个区间的值的运算符. 闭区间运算符 闭区间运算符(a...b)定义一个包含从a到b(包括a和b)的所有值的区间. ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的, ...

  8. 你应该知道的jQuery技巧【收藏】

    jQuery的存在,让学习前端开发的人感到前端越来越容易入门了,用简单的几行代码就可以实现需求,但是,你真的会用jQuery么,当代码运行 后无法看到自己预期的效果,是不是觉得jQuery出了问题,其 ...

  9. crm管理系统

    开始的时候,我们小组开始先完成各自的静态页面,并实现页面的跳转. //部门主页面 //部门添加页面 //部门修改页面 并通过AJXA发送到后台,后台通过处理方法,并返回到前端. 需要注意的是:在下拉列 ...

  10. Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...