Python之__loader__

主要引自: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+中不起作用。

时间: 2024-10-25 09:58:24

Python之__loader__的相关文章

Python 局部变量 与全局变量

Demo 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了 monet=22323 # 全局变量#局部变量 不加globaldef functiondemo(): # 如果 函数 不带参数,但是想要访问 全局变量 #必须加上global ,这样子就是局部变量了 global monet # 转换为全局变量,假如不转换的话,会报错的 s=2 monet += 2 #没有转换的话这里会报错 因为这是局

python基础之函数

python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 函数式编程和面向过程编程的区别: 函数式:将某功能代码封装到函数中,日后便无需重复编

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python dir

1. 在python命令行交互环境下,可以用dir()函数查看当前的变量,比如: >>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'name'] >>> help(dir)Help on built-in function dir in module builtins: dir(...) dir([object]) -> list o

Python内置函数(20)——exec

英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. object must be either a string or a code object. If it is a string, the string is parsed as a suite of Python statements which is then executed (unless a

python学习之函数

1.函数名可以被赋值 比如: def aaa(): pass b = aaa//将函数名字赋值给b b()//跟aaa()效果一样 2.return 2.1.如果函数不写return的话,会默认返回None 2.2.return后,函数下面的语句不会被执行,中断函数操作 2.3.return个什么东西都行,哪怕是个列表..... 3.pycharm使用断点调试的话,需要用debug模式(向右小箭头的小虫子) 4.参数: 默认参数必须写在后边 def aaa(a1, a2 = 1): pass//

我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)

五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>> abs(-10) 10 all(iterable) 如果可迭代对象(列表.元祖等)中所有的元素都是True,则返回True,否则返回False.相当于and >>> all([1, True, 1 == 1]) True any(iterable) 如果可迭代对象中任意一个元素是Tr

Python基础之包与模块

本文和大家分享的主要是python中包与模块相关内容,一起来看看吧,希望对大家学习python有所帮助. 摘要 1. 为重用以及更好的维护代码, Python 使用了模块与包:一个 Python 文件就是一个模块,包是组织模块的特殊目录(包含 __init__.py 文件). 2. 模块搜索路径, Python 解释器在特定的目录中搜索模块,运行时 sys.path 即搜索路径. 3. 使用 import 关键字导入模块,注意 import * 与 __all__ 的关系. 1. 模块与导入 A

python函数、装饰器、迭代器、生成器

5月21日,请假结婚,然后性格惰性来了,不怎么想看视频和笔记,性格中的弱点开始出现,开始做的不错,渐渐开始松懈,直至放弃--- 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递,它的应用形式也被称为高阶函数,函数的特性如下: a. 可以被引用 1 # def foo(): 2 # print('from foo') 3 # 4 # func = foo