Python 学习笔记一之模块探究学习

来源:互联网 发布:张大奕有几个淘宝店 编辑:程序博客网 时间:2024/05/21 04:23

探究模块的技能极有价值,因为作为Python程序猿,在职业生涯中可能会遇到很多有用的模块,而又无法集中时间全面系统的学习各种模块。

独立地探究模块还能让我们在网上找到用的模块时,可以很快理解它们,从而让编程成为一种享受。

探究模块最直接的方式就是在Python解释器中研究他们。

下面以SciPycopy 模块为例进行介绍


模块中有什么

  1. 导入模块

    >>> import scipy as sp

    如果没有引发错误,说明存在。

  2. 使用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) 中所有不以下划线开头的名字的列表

  3. __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
0 0
原创粉丝点击