Python 学习笔记1之模块探究学习
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:\Anaconda3\lib\copy.py
版权声明:本文为博主原创文章,未经博主允许不得转载。