不同的进口语法不等价?

2024-09-28 21:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了两种不同的输入语法,我认为它们是等价的。奇怪似乎接踵而至:

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']

Tags: inimportunitfindoutmoduleunitssympy
1条回答
网友
1楼 · 发布于 2024-09-28 21:31:48

看看sympy的源代码:https://github.com/sympy/sympy/blob/master/sympy/init.py#L55

from .calculus import *
# Adds about .04-.05 seconds of import time
# from combinatorics import *
# This module is slow to import:
#from physics import units
from .plotting import plot, textplot, plot_backends, plot_implicit

他们没有导入物理模块,因为加载显然需要相当长的时间。这就是为什么你在第一次尝试时会出错。你知道吗

在手动加载它之后,解释器已经加载了它并知道它在哪里(通过手动导入)。这就是为什么它在第二次尝试中起作用。你知道吗

因此,这种现象并不是针对python的导入功能,而是针对模块的初始化。你知道吗

附言。 如果取消对从物理模块加载unit的行的注释,它将是

import sympy
sympy.units.find_unit("coul")

相关问题 更多 >