как вы можете получить исходный код в python, проверка дает ошибку типа - PullRequest
0 голосов
/ 13 июля 2020

Чтобы стать лучше в программировании, может пригодиться анализ numpy и исходного кода scipy.

import inspect,numpy as np

x = [1,2]
inspect.getsource(np.max(x))

gives TypeError

пожалуйста, помогите, с уважением

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Код numpy и scipy см. В официальной документации.

https://numpy.org/doc/stable/reference/generated/numpy.amax.html

Часто они имеют [источник] ссылка. Или он запускает ipython, просто использование np.max?? дает то же самое.

В этом случае большая часть дисплея - это документы, а фактический код короткий:

def amax(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
         where=np._NoValue):
    return _wrapreduction(a, np.maximum, 'max', axis, None, out,
                          keepdims=keepdims, initial=initial, where=where)
File:      /usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py

Это говорит нам, что np.max (или amax) делегирует действие методу с аналогичным именем max. И если копнуть дальше, мы увидим, что это метод built-in, то есть это скомпилированный код, который мы не можем легко прочитать. Это довольно частая ситуация в numpy. Функции делегируются одноименным методам. Если вы не готовы серьезно изучить код c, это все, что вам нужно. И насколько вам нужно go, если вы не хотите быть numpy разработчиком / участником.

1 голос
/ 13 июля 2020

Из документации python

inspect.getsource (object)

Возвращает текст исходного кода для объекта. Аргументом может быть модуль,> класс, метод, функция, обратная трассировка, фрейм или объект кода. Исходный код возвращается в виде одной строки. Ошибка OSError возникает, если исходный код не может быть> извлечен.

В вашем примере показано, что вы вызываете функцию. Попробуйте просто inspect.getsource(np.max)

1 голос
/ 13 июля 2020

np.max(x) - целое число, 2. Целое число не имеет исходного кода.

Попробуйте просто

inspect.getsource (np.max)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...