Получить информацию о функции в Python, глядя на исходный код - PullRequest
0 голосов
/ 25 марта 2010

следующий код взят из галереи matplotlib:

#!/usr/bin/env python
from pylab import *

x = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

Я новичок в python и хотел бы изменить содержимое x и y из входного файла. У меня два коротких вопроса:

  1. Я мог бы догадаться, что означает array, но как только я увижу это в коде, как могу ли я узнать, к какой библиотеке это принадлежит и больше информации о Это? Должен ли я использовать какой-то питон команды отладки?
  2. Как мне вставить содержимое моего входной файл в x?

Спасибо

Ответы [ 5 ]

2 голосов
/ 25 марта 2010

Что касается вашего 1. это из-за вредных привычек человека, который дает вам эту программу. Это должно было быть:

#!/usr/bin/env python
import pylab

x = pylab.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = pylab.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

help(pylab.array)

или

#!/usr/bin/env python
from pylab import array

x = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

help(array)

Используйте help(something). Это помогает:)

Использование явного импорта очень удобно, если программы становятся немного сложнее. Единственный известный мне случай, когда from package import * хорош, это когда играешь в приглашении python и пытаешься что-то сделать.

Что касается файла, можете ли вы набросать, как файл выглядит? И я считаю, что numpy где-то имеет функцию загрузки массива, посмотрите поваренную книгу .

1 голос
/ 25 марта 2010
  • Используйте функцию help, чтобы узнать, на что способен объект.

    import pylab
    help(pylab.array)
    
  • «К какой библиотеке это относится» - это довольно забавный вопрос. Вы можете легко узнать, из какого модуля вы его используете, если вы реорганизуете код, чтобы не использовать import *. (Никогда не используйте import *.) Это не значит, что это оригинальный дом - pylab - это просто место, где куча вещей объединяется для удобства. pylab получает его от matplotlib.pylab, который получает его от numpy, который получает его от numpy.core.multiarray (который является модулем расширения C). Вы можете увидеть его оригинальный дом, посмотрев на pylab.array.__module__, когда это важно, что не часто.

    • Лично я думаю, что вам лучше вообще не использовать pylab, а просто получать данные из numpy, scipy и matplotlib так, как вам нужно, чтобы все было организовано. Процитируем Zen of Python: Пространства имен - одна из замечательных идей - давайте сделаем еще больше!
  • Как создать массив из файла зависит от формата файла. numpy.fromfile / pylab.fromfile может импортировать двоичный файл, хранящий данные массива. (Это тот же формат, который используется numpy.tofile - там большой удар.)

1 голос
/ 25 марта 2010

(1) Запустите консоль python и используйте функцию dir () для любого объекта / класса / переменной, о котором вы хотите узнать больше. Он распечатает все методы и свойства объекта.

>> import pylab        
>> x =  pylab.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
>> dir(x)

(2) поиск Файловых объектов в документации по питону

0 голосов
/ 25 марта 2010

Отвечая на вопрос № 2, если ваш файл выглядит так:

10 8.04
8 6.95
13 7.58
9 8.81
11 8.33
14 9.96
6 7.24
4 4.26
12 10.84
7 4.82
5 5.68

Тогда я бы сделал так:

x_list = list()
y_list = list()

fp = open('coords.txt', 'r')
for line in fp:
    line = line.strip()   # Remove trailing whitespace
    if not line: continue # Skip empty lines
    a,b = line.split()    # Split line by whitespace, storing coords in a & b
    x_list.append(a)      # Add a to x_list
    y_list.append(b)      # Add b to y_list
fp.close()

x = array(x_list)
y = array(y_list)
0 голосов
/ 25 марта 2010

array представляется функцией / классом в pylab. Вы можете сделать help(array), чтобы узнать больше - это зависит от наличия правильной строки документации для array.

from module import * является проблемной идиомой в нескольких отношениях именно по той причине, что затрудняет поиск источника идентификаторов.

import pylab
x = pylab.array(...)

может быть лучше.

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