Python 学习笔记一之模块探究学习
Python 学习笔记一之模块探究学习
探究模块的技能极有价值,因为作为Python程序猿,在职业生涯中可能会遇到很多有用的模块,而又无法集中时间全面系统的学习各种模块。
独立地探究模块还能让我们在网上找到用的模块时,可以很快理解它们,从而让编程成为一种享受。
探究模块最直接的方式就是在Python解释器中研究他们。
下面以SciPy
和copy
模块为例进行介绍
模块中有什么
导入模块
>>> import scipy as sp
如果没有引发错误,说明存在。
使用dir
>>> [n for n in dir(sp) if n.startswith('_')]
Out[3]:
['__SCIPY_SETUP__',
'__all__',
'__builtins__',
'__cached__',
'__config__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__numpy_version__',
'__package__',
'__path__',
'__spec__',
'__version__']
找出包含dir(sp)
中所有不以下划线开头的名字的列表
__all__
变量
>>> [n for n in dir(copy) if not n.startswith('_')]
Out[2]:
['Error',
'PyStringMap',
'builtins',
'copy',
'deepcopy',
'dispatch_table',
'error',
'name',
't',
'weakref']
__all__
变量内容如下
>>> copy.__all__
Out[3]: ['Error', 'copy', 'deepcopy']
如果你使用如下代码
>>> from copy import *
就只能导入__all__
变量中的4个函数,要导入PyStringMap
,必须显示实现。
在编写模块时,像设置__all__
这样的技术是相当有用的。因为模块中可能会有一大堆其他程序中不需要或不想要的变量、函数和类。__all__
会“客气地”将它们过滤。
用help
获取帮助
>>> help(copy.copy)
Help on function copy in module copy:
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
>>> print(copy.copy.__doc__)
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
使用help
与直接检查文档字符串相比,好处在于会获得更多信息。
使用源代码
阅读源代码,事实上是学习Python最好的方式,除了自己编写代码外。
检查模块的__file__
属性来找到源码的路径。
>>> print(copy.__file__)
E:Anaconda3libcopy.py
评论关闭