Python: как передать объект / переменную через функцию и изменить ее непосредственно внутри функции? - PullRequest
0 голосов
/ 10 апреля 2020

На языке C я привык делать это путем передачи адреса переменных (передача по ссылке), но в Python, несмотря на то, что я уже читал о некоторых альтернативах, я понятия не имею, как я могу передать Google Sheet (рабочий лист) для функции, которая должна быть изменена и сохранена в Интернете с использованием библиотеки gspread.

Вот мой код:

def ordenar(self, list):
     sheet = len(list.worksheets())
     for i in range(sheet):
         lista = list.get_worksheet(i).row_values(1)
         lista.sort()
         size = len(lista)
         if size > 1:
             cell_list = list.get_worksheet(i).range(1, size)
             j = 0
             for cell in cell_list:
                 cell.value = lista[j]
                 j = j+1
             # Update in batch
             list.get_worksheet(i).update_cells(cell_list)

Теперь часть основного кода, которая использует функция:

#Teste de ordenação
Jose.vocabulario.ordenar(Jose.vocabulario.artigo)

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Я решил это. Ошибка была в функции worksheet.range (): worksheet.range (начальная строка, начальный столбец, последняя строка, последний столбец).

0 голосов
/ 10 апреля 2020

Во-первых, не используйте list в качестве имени параметра, поскольку оно затеняет встроенную list функцию Python.

Вы можете изменить объект в функции просто ... модифицируя это как-то. Конечно, объект должен быть изменчивым. Пример:

mylist = [1, 2, 3]
print(mylist)  # output: [1, 2, 3]

def append_five(list_to_modify):
    list_to_modify.append(5)

append_five(mylist)
print(mylist)  # output: [1, 2, 3, 5]

Я подозреваю, что в вашем случае происходит то, что в какой-то момент лист Google Sheets необходимо сохранить, чтобы полученный файл отражал изменения в вашем коде. Я не очень разбираюсь в API Google Sheets, и вы не упомянули модуль, который вы используете для работы с ними, но именно так вы бы сделали это в openpyxl , Python модуле для работы с таблицами Excel.

...