function getDynamicRows(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('dynamicSheet');
var sourceRange = sheet.getRange('A1:B');
var data = sourceRange.getValues(); // Array of arrays [[Row1],[Row1],[Row3]]
// add data to next empty row in the static sheet.
var targetSheet = ss.getSheetByName('targetSheet');
data.forEach(function(row){
targetSheet.appendRow(row)
})
}
重新宣布'我'上面定义的没有用法
如何修复此警告?!!!
答案 0 :(得分:2)
这是一个警告,因为在Python-2.x中, list comprehension 中的变量是"泄漏"。这意味着这些不本地作用域。例如:
>>> i = 'somevalue'
>>> [[] for i in range(5)]
[[], [], [], [], []]
>>> i
4
由于您在两个列表推导中都使用了i
,因此您将使用第二个i
覆盖第一个中声明的i
。
如果您想摆脱此错误,可以使用不同的变量名称:
x = [[] for i in range(5)]
y = [[] for j in range(10)]
在这种情况下,您不会在列表理解中使用i
和j
。通常是"一次性"变量是下划线(_
)或甚至是双下划线(__
):
x = [[] for __ in range(5)]
y = [[] for __ in range(10)]
正如"Hitchhikers guide to Python"中所写:
如果您需要分配某些内容(例如,在解包中)但不需要该变量,请使用
__
(..)许多Python样式指南建议使用单个下划线 {1}用于一次性变量而不是双下划线
_
推荐这里。问题是__
通常用作别名 对于_
函数,也用于交互式 提示保持上一次操作的值。使用双 相反,下划线同样清晰,几乎同样方便 消除了意外干扰其中任何一种的风险 其他用例。