我尝试了两种不同的输入语法,我认为它们是等价的。奇怪似乎接踵而至:
In [7]: import sympy
In [8]:sympy.physics.units.find_unit("Giga Electron Volt")
Traceback (most recent call last):
File "<ipython-input-8-8a26ac4a085a>", line 1, in <module>
sympy.physics.units.find_unit("Giga Electron Volt")
AttributeError: 'module' object has no attribute 'physics'
In [9]:import sympy.physics.units as u
In [10]:u.find_unit("coul")
Out[10]: ['coulomb', 'coulombs']
In [11]:import sympy
In [12]:sympy.physics.units.find_unit("coul")
Out[12]: ['coulomb', 'coulombs']
看看sympy的源代码:https://github.com/sympy/sympy/blob/master/sympy/init.py#L55
他们没有导入物理模块,因为加载显然需要相当长的时间。这就是为什么你在第一次尝试时会出错。你知道吗
在手动加载它之后,解释器已经加载了它并知道它在哪里(通过手动导入)。这就是为什么它在第二次尝试中起作用。你知道吗
因此,这种现象并不是针对python的导入功能,而是针对模块的初始化。你知道吗
附言。 如果取消对从物理模块加载
unit
的行的注释,它将是相关问题 更多 >
编程相关推荐