| 
 | 
 
 
 楼主 |
发表于 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这里小甲鱼老湿有更具体的详解 
 |   
 
 
 
 |