Python:如何通过函数传递对象/变量并直接在函数内部进行更改?

问题描述 投票:-2回答:2

在C语言中,我习惯于通过传递变量地址(按引用传递)来做到这一点,但是在Python中,尽管已经阅读了一些替代方法,但我并不怎么想如何传递Google表格(工作表)到必须使用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)
python gspread
2个回答
0
投票

首先,请不要使用list作为参数名称,因为它会遮盖Python的内置list函数。

您可以通过简单地...以某种方式对其进行修改来更改函数中的对象。当然,该对象必须是可变的。例如:

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表格工作表,以使生成的文件反映代码中的更改。我对Google Sheets API的了解不多,您也没有提到要使用它们的模块,但这就是您在openpyxl(用于处理Excel电子表格的Python模块)中使用的方法。


0
投票

我已经解决了。错误出在worksheet.range()函数中:worksheet.range(开始行,开始列,最后一行,最后一列)。

© www.soinside.com 2019 - 2024. All rights reserved.