2016-12-27 5 views
0

다음 코드가 있습니다.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의 값을 얻습니다. 고맙습니다.

+0

왜 당신이 만드는 for 루프의 함수는 무엇입니까? 처음에했던 것처럼 함수를 작성한 다음 필요할 때 호출하십시오. 또한 우리는 어떤 응답 [응답]이 루프를 이해하기가 어렵다는 것을 모르겠다. –

+0

함수 입력을 수정한다는 것을 이해하고 있습니까? 당신은 함수에서 매개 변수'm'을 수정하고 있습니다 (이것은 목록이고 그래서 참조로 전달됩니다). 또한 그것을 반환하고 있습니까?! 그것은 이해가되지 않습니다. 코드 전체가 횡설수설합니다. –

답변

3

이것은 아래 코드 때문에 발생합니다. if 조건이 실패하더라도

def num_dim_2(response_i, m): 
      if response_i['objkey']== 'explorecube_dimvalues': 
       m = num_dim(response_i, m) 
       print(m) 
      return m 

return m 문은 여전히 ​​빈 목록을 반환하는 실행됩니다.

다음은 루프 내에서 print(num_dimentions)을 실행하고 있습니다. 즉, 루프가 실행될 때마다 값이 인쇄됩니다. 출력이 하나만 필요한 경우에는 일부 조건에 따라 인쇄해야합니다.

참고 : 그 정말 좋지 않은 프로그래밍 연습이 같은 변수 이름을 사용하고 또한 다른 유형의 변수 이름을 재사용하는 (예를 : num_dim에, m이 목록이 갑자기 m 일부 정수입니다!)

관련 문제