|
楼主 |
发表于 2017-11-18 12:45:48
|
显示全部楼层
052模块:像个极客一样去思考(下)
本帖最后由 摆渡终极鉴黄师 于 2017-11-19 19:37 编辑
@&*……(*¥&*!*(@#&↓
>>> dir(timeit)
['Timer', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_globals', 'default_number', 'default_repeat', 'default_timer', 'dummy_src_name', 'gc', 'itertools', 'main', 'reindent', 'repeat', 'sys', 'template', 'time', 'timeit']
>>> timeit.__all__ # 不是所有的模块都有all这个属性,有的话这个属性包含的内容 是 这个模块的作者 希望外部调用的这些名字,这些函数,或者是这些类,而其他的就是不希望外部调用的了
['Timer', 'timeit', 'repeat', 'default_timer'] # 只有4个元素,前面一个是类,后面3个是接口函数,all显示出来的这个模块可以供外界调用的所有东西,所有信息
>>>
——————————————————————————————————
如果一个模块设置了all属性,使用这个from timeit import *这样的语句,只有all属性这里面的名字才会被导入,例如
>>> from timeit import *
>>> Timer
<class 'timeit.Timer'>
>>> ab
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
ab
NameError: name 'ab' is not defined
>>>
注:如果没有设置all属性的话,from 模块名 import *就会把所有不以下划线开头的名字都导入到当前命名空间,所以在编写模块的时候,对外提供接口函数和类都设置到这个all属性这个列表里面去,这样是比较规范的做法
——————————————————————————————————
>>> import timeit
>>> timeit.__file__
'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\timeit.py'
>>>
这样可以找到作者的源代码,阅读可以提高自己的水平
——————————————————————————————————
>>> help(timeit)
>>> !&**……#*&!……*&(@¥
比Docs属性详细一点,比官方文档简单一点,介于中间的一个帮助文档,这里!&**……#*&!……*&(@¥也可以知道各个函数的一个用法
http://bbs.fishc.com/thread-55593-1-1.html这里小甲鱼老湿有更具体的详解
|
|