简体   繁体   English

为什么使用检查模块找不到Numpy中的共轭源代码?

[英]Why the source code of conjugate in Numpy cannot be found by using the inspect module?

I want to see the implementation of the conjugate function used in Numpy . 我想看看Numpy使用的conjugate函数的实现。 Then I tried the following: 然后我尝试了以下方法:

import numpy as np
import inspect
inspect.getsource(np.conjugate)

However, I received the following error message stating that <ufunc 'conjugate'> is not a module, class, method, function, traceback, frame, or code object . 但是,我收到以下错误消息,指出<ufunc 'conjugate'> is not a module, class, method, function, traceback, frame, or code object May someone answer why? 有人可以回答为什么吗?

In [8]: inspect.getsource(np.conjugate)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-821ecfb71e08> in <module>()
----> 1 inspect.getsource(np.conj)

/Users/duanlx/anaconda/python.app/Contents/lib/python2.7/inspect.pyc in getsource(object)
    699     or code object.  The source code is returned as a single string.  An
    700     IOError is raised if the source code cannot be retrieved."""
--> 701     lines, lnum = getsourcelines(object)
    702     return string.join(lines, '')
    703

/Users/duanlx/anaconda/python.app/Contents/lib/python2.7/inspect.pyc in getsourcelines(object)
    688     original source file the first line of code was found.  An IOError is
    689     raised if the source code cannot be retrieved."""
--> 690     lines, lnum = findsource(object)
    691
    692     if ismodule(object): return lines, 0

/Users/duanlx/anaconda/lib/python2.7/site-packages/IPython/core/ultratb.pyc in findsource(object)
    149     FIXED version with which we monkeypatch the stdlib to work around a bug."""
    150
--> 151     file = getsourcefile(object) or getfile(object)
    152     # If the object is a frame, then trying to get the globals dict from its
    153     # module won't work. Instead, the frame object itself has the globals

/Users/duanlx/anaconda/python.app/Contents/lib/python2.7/inspect.pyc in getsourcefile(object)
    442     Return None if no way can be identified to get the source.
    443     """
--> 444     filename = getfile(object)
    445     if string.lower(filename[-4:]) in ('.pyc', '.pyo'):
    446         filename = filename[:-4] + '.py'

/Users/duanlx/anaconda/python.app/Contents/lib/python2.7/inspect.pyc in getfile(object)
    418         return object.co_filename
    419     raise TypeError('{!r} is not a module, class, method, '
--> 420                     'function, traceback, frame, or code object'.format(object))
    421
    422 ModuleInfo = namedtuple('ModuleInfo', 'name suffix mode module_type')

TypeError: <ufunc 'conjugate'> is not a module, class, method, function, traceback, frame, or code object

Thanks! 谢谢!

Numpy is written in C, for speed. Numpy用C编写,以提高速度。 You can only see the source of Python functions. 您只能看到Python函数的来源。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM