как импортируется модуль / функция и как узнать, какие ключевые слова могут быть переданы во встроенные функции - PullRequest
0 голосов
/ 25 мая 2019

Мой первый вопрос: как импортируется функция? У меня есть заявление ниже, но функция show () находится не в bokeh.plotting, а в другой папке / модуле, т.е. bokeh.io.showing, то как же она импортируется с использованием bokeh.plotting?

from bokeh.plotting import figure, output_notebook, show 

Следующий вопрос: в приведенной ниже функции используются некоторые ключевые слова:

p = figure(width = 400, height = 400)

как узнать, какие ключевые слова можно использовать здесь? я знаю, что если я использую функцию помощи Python, это может дать некоторую идею, но здесь показано ниже только

figure(**kwargs)
    Create a new Figure for plotting.

ничего не указано, какие ключевые слова могут быть использованы в этой функции.

Я открыл исходный код и получил ниже:

def __init__(self, *arg, **kw):

        if 'plot_width' in kw and 'width' in kw:
            raise ValueError("Figure called with both 'plot_width' and 'width' supplied, supply only one")
        if 'plot_height' in kw and 'height' in kw:
            raise ValueError("Figure called with both 'plot_height' and 'height' supplied, supply only one")
        if 'height' in kw:
            kw['plot_height'] = kw.pop('height')
        if 'width' in kw:
            kw['plot_width'] = kw.pop('width')

поэтому у меня есть идея, что можно использовать в этом (ширина / высота), но есть ли другой способ?

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Единственный способ найти ключевые слова - дать неверное ключевое слово, например, len.Это даст нам AttributeError вместе с ожидаемыми значениями.Я запустил это:

p = figure(width = 400, height = 400, background_fill_color='black',len=1)

это дало мне следующее:

AttributeError: unexpected attribute 'len' to Figure, possible attributes are above, align, aspect_ratio, aspect_scale, background, background_fill_alpha, background_fill_color, below, border_
fill_alpha, border_fill_color, center, css_classes, disabled, extra_x_ranges, extra_y_ranges, frame_height, frame_width, height, height_policy, hidpi, inner_height, inner_width, js_event_callb
acks, js_property_callbacks, left, lod_factor, lod_interval, lod_threshold, lod_timeout, margin, match_aspect, max_height, max_width, min_border, min_border_bottom, min_border_left, min_border
_right, min_border_top, min_height, min_width, name, outer_height, outer_width, outline_line_alpha, outline_line_cap, outline_line_color, outline_line_dash, outline_line_dash_offset, outline_l
ine_join, outline_line_width, output_backend, plot_height, plot_width, renderers, right, sizing_mode, subscribed_events, tags, title, title_location, toolbar, toolbar_location, toolbar_sticky,
 visible, width, width_policy, x_range, x_scale, y_range or y_scale

Не уверен насчет другого моего вопроса

edit: я получил ответ на другой мой вопростакже.Оператор import проверяет файл init.py, и все объекты, присутствующие в этом файле, становятся доступными для использования.В этом случае show () уже был импортирован.

from ..io import show; show
0 голосов
/ 25 мая 2019

Сам факт, что он принимает ** kwargs, означает, что любые аргументы ключевого слова, которые вы передаете функции, являются допустимыми.

Это обычно делается для оболочек низкоуровневых реализаций.Это имеет преимущество в том, что нет необходимости изменять промежуточную функцию (ту, которую вы вызываете - например, bokeh.figure, которая внутренне вызывает функцию matplotlib).

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

Это очень распространенная практика для большого количества данных.-science библиотеки (хотя вы обнаружите, что некоторые очень популярные библиотеки проходят кропотливый процесс поддержки документации, например, matplotlib).

В целом, эти промежуточные функции обычно принимают (* args и ** kwargs), так какфигура боке не принимает его, вы не можете передать ему что-то вроде рисунка (1, 2, 3).

Если вы впервые сталкиваетесь с чем-то ** (распаковка списков и словарей в качестве аргументов),это может быть хорошимВремя для поиска в Google тоже самое, так как это очень распространенное явление.

Что касается приемлемых аргументов, я нашел следующее:

Аргументы ключевых слов: Документация по рисункам

active_drag (Either (Auto, String, Instance)(Drag))): какой инструмент перетаскивания должен быть изначально активным.(по умолчанию: 'auto')

active_inspect (Либо (Auto, String, Instance (Inspection), Seq (Instance (Inspection))))): какой инструмент перетаскивания должен изначально быть активным.(по умолчанию: 'auto')

active_scroll (Either (Auto, String, Instance (Scroll))): какой инструмент прокрутки изначально должен быть активным.(по умолчанию: 'auto')

active_tap (Either (Auto, String, Instance (Tap))): какой инструмент нажатия изначально должен быть активным.(по умолчанию: 'auto')

tools (Either (String, Seq (Either (String, Instance (Tool))))): Инструменты, с которых должен начинаться график.(по умолчанию: 'pan, wheel_zoom, box_zoom, сохранить, сбросить, помочь')

подсказки (Либо (String, List (Tuple (String, String))))): необязательный аргумент для настройки всплывающих подсказок для рисунка,Этот аргумент принимает те же значения, что и свойство HoverTool.tooltips.Если в аргументе инструментов указан инструмент наведения, это значение переопределит значение всплывающей подсказки для инструментов наведения.Если в аргументе tools не указан инструмент наведения, то передача здесь всплывающих подсказок приведет к их созданию и добавлению.(по умолчанию: Нет)

x_axis_label (String): метка для оси X.(по умолчанию: '')

x_axis_location (Enum (VerticalLocation)): где должна располагаться ось X.(по умолчанию: «ниже»)

x_axis_type (Either (Auto, Enum (Enumeration (linear, log, datetime, mercator)))): Тип оси x.(по умолчанию: 'auto')

x_minor_ticks (Either (Auto, Int)): Количество второстепенных тиков между соседними главными тиками оси x.(по умолчанию: 'auto')

x_range (Any): настройка диапазона x графика.(по умолчанию: Нет)

y_axis_label (String): метка для оси Y.(по умолчанию: '')

y_axis_location (Enum (HorizontalLocation)): где должна располагаться ось Y.(по умолчанию: 'left')

y_axis_type (Either (Auto, Enum (Enumeration (linear, log, datetime, mercator)))): Тип оси Y.(по умолчанию: 'auto')

y_minor_ticks (Either (Auto, Int)): Количество второстепенных тиков между соседними главными тиками оси y.(по умолчанию: 'auto')

y_range (Any): настройка диапазона x графика.(по умолчанию: нет)

.

...