我正在查看itertools(https://docs.python.org/2/library/itertools.html)的python文档中的组合代码
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
function getDrawChartFunction(year, data) {
return function() {
console.log('Inside the drawChart() function. Current year value is: '+year);
var data = google.visualization.arrayToDataTable(data);
var options = {
title: 'Distribución de notas y entrevistas en el año '+ year
//, ...
};
var chart = new google.visualization.PieChart(document.getElementById('chart_'+year));
chart.draw(data, options);
}; // End of return of *anonymous function closure*
}
<?php
foreach ($anios as $anio)
{
$datos=$difusion_stats->notas_stats_anio($anio->Año);
?>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(getDrawChartFunction(
<?=$anio->Año?>,
<?=$datos?>
));
</script>
<?
}
?>
在它说index [i] + = 1的行上,为什么它能找到'i'?据我所知,一旦你离开for循环(在True之后开始),变量'i'应该不存在(就像我在第一个yield句中提到的那样)!!!
也有人可以用英语解释逻辑吗?我理解直到第一次屈服,但后来我迷路了。提前谢谢。
答案 0 :(得分:2)
Python不是块作用域。粗略地说,Python是功能范围的。在其他语言中,如果你做了
for (int i = 0; i < whatever; i++) {
...
}
然后i
将是for
循环的本地。在Python中,等效的
for i in xrange(whatever):
使用整个封闭函数本地的i
变量。另外,i
永远不会取值whatever
,所以当循环结束时,我们仍然有i == whatever - 1
。