擅长:python、mysql、java
<p>我猜<code>gchild == 'endorsements'</code>和<code>gchild == 'localidentifier'</code>是互斥的—所以不会出现两个代码块都将运行的情况。您只在<code>if gchild == 'localidentifier':</code>块中为<code>student</code>赋值,因此,如果第一个<code>gchild</code>值是<code>'endorsements'</code>,则<code>student</code>将不会被填充,最终会出现UnboundLocalError。你知道吗</p>
<p>我不知道您的代码的细节,但我猜您可能希望用类似于第一个<code>if</code>块的值填充<code>student</code>var,如下所示:</p>
<pre><code>student = var.student_info[child][gchild]
</code></pre>
<p>或者可以使用<code>ecert</code>变量,该变量的值似乎与<code>student</code>的值相同:</p>
<pre><code>if gchild == 'endorsements':
ecert = var.student_info[child][gchild]
l = list()
for subj in ecert:
if ecert[subj]['courseendorsementresult'] != 'NO':
result = ecert[subj]['courseendorsementresult']
l.append([subj,result])
achievements[ecert]['endorsements'] = l
</code></pre>