该文件的目的是什么" pylab.py"

时间:2018-03-27 15:04:31

标签: python

我查看了文件" pylab.py"在 matplotlab 的目录中,发现它包含了很多import个,然后定义了一个变量" bytes"在最后一行。以下是此文件的最后几行:

from numpy.fft import *
from numpy.raenter code herendom import *
from numpy.linalg import *

import numpy as np
import numpy.ma as ma

# don't let numpy's datetime hide stdlib
import datetime

# This is needed, or bytes will be numpy.random.bytes from
# "from numpy.random import *" above
bytes = six.moves.builtins.bytes

我想知道这样一个文件的目的是什么,它只定义了一个看似无用的变量。因此,编写from matplotlib import pylab等代码的目的是什么?

1 个答案:

答案 0 :(得分:1)

matplotlib docs说:

  

pylab是一个便利模块,可以在单个名称空间中批量导入matplotlib.pyplot(用于绘图)和numpy(用于数学和使用数组)。虽然很多例子都使用pylab,但不再推荐使用它。

例如,你可以做到

>>> from pylab import *

您已将pylab导入的所有名称导入到本地名称空间中。这在使用交互式shell时很方便。

此外,pylab导入datetimebytes。这是因为from numpy.foo import *语句导入名为bytesdatetime的numpy对象,这些对象与具有这些名称的标准python对象不同,因此需要使用标准版本覆盖它们。

将名称导入模块只是为了让其他模块可以从那里导入而不是原始模块的做法并不罕见。例如,给定此模块:

$ cat foo/__init__.py
from bar import *
from baz.quux import *
from spam import eggs

其他模块可以from foo import eggs而不是from foo.spam import eggs。除了减少输入的便利性之外,这种方法还隐藏了来自其客户端的foo包的内部结构。只要他们从顶级模块导入,他们就不必担心包的内部结构可能会随着时间而改变。这是facade设计模式的一种形式。