подзаголовок def(plt, (Y, X), (sz_y, sz_x) = (10, 10)): выдает недопустимый синтаксис в Python 3

#python #python-3.x #matplotlib #syntax #subplot

Вопрос:

Я пытаюсь запустить код, который изначально был написан для Python 2 для Python 3. Блок кода является:

 def draw_bbox(plt, ax, rois, fill=False, linewidth=2, edgecolor=[1.0, 0.0, 0.0], **kwargs):
    for i in range(rois.shape[0]):
        roi = rois[i,:].astype(np.int)
        ax.add_patch(plt.Rectangle((roi[0], roi[1]),
            roi[2] - roi[0], roi[3] - roi[1],
            fill=False, linewidth=linewidth, edgecolor=edgecolor, **kwargs))

def subplot(plt, (Y, X), (sz_y, sz_x) = (10, 10)):
    plt.rcParams['figure.figsize'] = (X*sz_x, Y*sz_y)
    fig, axes = plt.subplots(Y, X)
    return fig, axes
 

и ошибка, которую я получаю, такова:

  File "<ipython-input-7-9e2eb5f0d3ab>", line 8
    def subplot(plt, (Y, X), (sz_y, sz_x) = (10, 10)):
                     ^
SyntaxError: invalid syntax
 

Как я могу это исправить? Код взят из этого репозитория: https://github.com/s-gupta/v-coco/blob/master/V-COCO.ipynb

введите описание изображения здесь

Ответ №1:

Вот как вы можете переписать эту функцию:

 def subplot(plt, yx, sz = (10, 10)):
    (Y, X) = yx
    (sz_y, sz_x) = sz
    plt.rcParams['figure.figsize'] = (X*sz_x, Y*sz_y)
    fig, axes = plt.subplots(Y, X)
    return fig, axes
 

Ответ №2:

Вы не можете поместить набор в качестве параметра в параметр определяемой пользователем функции. Вероятно, вы можете разделить X и Y на два разных параметра, таких как:

 def subplot(plt, Y, X, (sz_y, sz_x) = (10, 10)):
 

или вы можете указать кортеж, как в python3

 def subplot(plt, xy: set, (sz_y, sz_x) = (10, 10)):
 

Комментарии:

1. спасибо за ваши комментарии. Я не изменил ни одной части их кода. Я в основном просто запустил их записную книжку без каких-либо изменений.

2. Файл «<ipython-вход-8-903b7f687ea5>», строка 9, подзаголовок(plt, Y, X, (sz_y, sz_x) = (10, 10)): ^ Ошибка синтаксиса: неверный синтаксис

3. не работал файл «<ipython-input-9-10f88ce2a5ce>», строка 9, подзаголовок(plt, xy: набор, (sz_y, sz_x) = (10, 10)): ^ Ошибка синтаксиса: неверный синтаксис