为什么此Python函数返回UnboundLocalError?

西亚兰·威尔士(CiaranWelsh)

谁能解释为什么此函数返回以下错误?

功能:

def scatter_x_y(self,filtered_data,x_parameter,y_parameter):
    for i in range(len(filtered_data)):
        if filtered_data[i].name==x_parameter:
            x=filtered_data[i]
            x_index=list(x.keys())
        elif filtered_data[i].name==y_parameter:
            y=filtered_data[i]
            y_index=list(y.keys())
    print x_index

错误:

UnboundLocalError: local variable 'x_index' referenced before assignment

如果循环从不执行,x_index则为undefined。也不是y_index; 它的值只有在短暂的时间内才能看到,因为它没有在elif可见的范围之外定义

你可能已经意动循环的印刷中,作为价值x_indexy_index只存在一个迭代。否则,将其打印或使用该值只会使您最后获得计算的值。然后,您可能想在循环声明它们,否则在打印出来时会遇到相同的问题。当我们真的不希望将其打印出来时,这也可以防止不必要地重复打印任何一个值。

def scatter_x_y(self,filtered_data,x_parameter,y_parameter):
    for i in range(len(filtered_data)):
        x_index, y_index = None, None
        if filtered_data[i].name==x_parameter:
            x=filtered_data[i]
            x_index=list(x.keys())
        elif filtered_data[i].name==y_parameter:
            y=filtered_data[i]
            y_index=list(y.keys())
        if x_index:
            print "x_index={}".format(x_index)
        if y_index:
            print "y_index={}".format(y_index)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章