我有以下代码。
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的值作为最终输出)。谢谢。
答案 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_dim
,m
中的变量名称是一个非常好的编程习惯是一个列表,突然m
是一些整数!)