获取模块的导入名称

2024-04-24 13:51:23 发布

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

我有以下资料:

import numpy as np
v = np.ndarray([1,2,3,4,5])

我感兴趣的是检查v,并以某种方式恢复它的类型np.ndarray

什么不起作用:

  1. type(v).__name__给出了ndarray而没有np
  2. type(v).__qualname__给出了ndarray而没有np
  3. type(v).__module__给出了{}而不是{}

我怎样才能拿回np.ndarray


Tags: nameimportnumpy类型astypenp方式
1条回答
网友
1楼 · 发布于 2024-04-24 13:51:23

一种方法是在globals()中查找用于模块的别名

def name_of(x):
    t = type(x)
    alias = next(
        k
        for k, v in globals().items()
        if hasattr(v, "__name__") and v.__name__ == t.__module__
    )
    return f"{alias}.{t.__name__}"

用法示例:

>>> import numpy as np
>>> name_of(np.array([]))
'np.ndarray'

此外,由于字典迭代是按插入顺序进行的,因此将返回第一次声明的别名

相关问题 更多 >