我有下面这段代码。
 def num_dim(response_i, m):
   for response_j in response_i['objcontent']:
      if response_i['objkey']== 'explorecube_dimvalues':
         mm = [response_j['title']]
         m.append(mm)
   m=(len(m))
   return m
if __name__=='__main__':
    for response_i in response['response']:
        m=[ ]
        x=0
        def num_dim_2(response_i, m):
           if response_i['objkey']== 'explorecube_dimvalues':
               m = num_dim(response_i, m)
               print(m)
           return m
        num_dimentions= num_dim_2 (response_i, m)
        print(num_dimentions)print(m)的输出为:
3但是print(num_dimentions)的输出是:
[ ] 
[ ]
3
[ ]我预计只有3个。
任何人都知道如何解决这个问题(将值3作为最终输出)。谢谢。
发布于 2016-12-27 20:44:35
这是因为下面这段代码。
def num_dim_2(response_i, m):
           if response_i['objkey']== 'explorecube_dimvalues':
               m = num_dim(response_i, m)
               print(m)
           return m即使if条件失败,仍然会执行return m语句,这将返回一个空白列表。
此外,您将在循环内执行print(num_dimentions),这意味着只要执行循环,就会打印同样多的值。如果您只需要一个输出,则必须根据某些条件打印它。
注意:使用相同的变量名并重用不同类型的变量名真的不是一个好的编程实践(例如:在num_dim中,m是一个列表,而m突然变成了某个整数!)
https://stackoverflow.com/questions/41345187
复制相似问题