我查看了matplotlab目录中的文件“ pylab.py”,发现该文件包含大量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这样的代码的目的是什么?

最佳答案

matplotlib docs说:


  pylab是一个便捷模块,可在单个名称空间中批量导入matplotlib.pyplot(用于绘图)和numpy(用于数学以及使用数组)。尽管许多示例都使用pylab,但不再建议使用。


因此,例如,您可以

>>> from pylab import *

并且您已经将pylab导入的所有名称都导入了本地名称空间。使用交互式外壳时,这很方便。

另外,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设计模式的一种形式。

关于python - “pylab.py”文件的目的是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49516422/

10-12 16:57