【发布时间】:2015-05-31 13:37:07
【问题描述】:
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
以上语句是否等效?哪种形式更易读/更好?
【问题讨论】:
标签: python matplotlib python-import
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
以上语句是否等效?哪种形式更易读/更好?
【问题讨论】:
标签: python matplotlib python-import
尽管它们是等价的,但我认为有一个很好的论据,即第二种形式 import matplotlib.pyplot as plt 在客观上更具可读性:
通常习惯使用import matplotlib.pyplot as plt 并在matplotlib 文档中建议(参见http://matplotlib.org/users/pyplot_tutorial.html 等...),因此大多数读者会更熟悉。
import matplotlib.pyplot as plt 更短但同样清晰。
import matplotlib.pyplot as plt 给不熟悉的读者一个提示,pyplot 是一个模块,而不是一个可能从第一种形式错误地假定的函数。
【讨论】:
__init__.py 文件,告诉 python 该目录将被视为一个包。包A 中的模块B(即在文件结构A/B.py 中导入为import A.B
A.B 是否与对象的属性相同?
它们的工作方式相同,所以你喜欢哪个取决于你,我个人不喜欢打字,所以我更喜欢第二个。
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt1
print(dir(plt) == dir(plt1))
True
【讨论】:
是的,两者都是一样的。 这取决于你喜欢导入什么。
我个人喜欢写作:
from matplotlib import pyplot as plt
因为它对我来说看起来更清晰干净。
【讨论】:
刚刚注意到一个案例让我觉得这两个语句的工作方式不同
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Qt5Agg')
plt.plot(list(range(10)))
上面的代码运行良好。 但是如果我用另一种方式写第二行,
import matplotlib
from matplotlib import pyplot as plt
matplotlib.use('Qt5Agg')
plt.plot(list(range(10)))
上面的这个不起作用,进程在“matplotlib.use('Qt5Agg')”处停止。 进程以退出代码 -1073741571 (0xC00000FD) 结束
这发生在 Spyder 控制台或 Pycharm 控制台等 IDE 中。感觉跟使用的后端有关,虽然我没有明确的线索。
【讨论】: