蟒蛇。在另一个函数内调用一个函数

时间:2016-12-27 12:25:44

标签: python

我有以下代码。

 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的值作为最终输出)。谢谢。

1 个答案:

答案 0 :(得分:3)

这是因为下面的代码。

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_dimm中的变量名称是一个非常好的编程习惯是一个列表,突然m是一些整数!)