2016-12-27 7 views
0

Ich habe das folgende Stück Code.Python. Rufen Sie eine Funktion innerhalb einer anderen Funktion

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) 

Der Ausgang für print(m) ist:

3 

aber die Ausgabe für print(num_dimentions) ist:

[ ] 
[ ] 
3 
[ ] 

, die ich erwartet hatte nur 3.

Wer weiß, wie kann ich das beheben Dieses Problem (erhalten Sie den Wert von 3 als endgültige Ausgabe). Vielen Dank.

+0

Warum sind Sie zu schaffen die Funktion in der for-Schleife? Erstellen Sie einfach die Funktion wie zuvor und rufen Sie sie bei Bedarf an. Auch wissen wir nicht, welche Antwort ['Antwort'] ist, so ist es schwierig, die Schleife zu verstehen –

+0

Sie verstehen, dass Sie Ihre Funktion Eingänge ändern, richtig? Sie ändern den Parameter 'm' in Ihren Funktionen (was eine Liste ist und so als Referenz übergeben wird), und Sie geben sie auch zurück ?! Es ergibt keinen Sinn. Das ganze Stück Code ist Kauderwelsch. –

Antwort

3

Dies ist wegen der unten stehenden Code.

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

Auch wenn if Zustand ausfällt, wird return m Aussage noch ausgeführt, die eine leere Liste zurück.

Weiter führen Sie print(num_dimentions) innerhalb einer Schleife aus, was bedeutet, dass der Wert so oft gedruckt wird, wie die Schleife ausgeführt wird. Wenn Sie nur eine Ausgabe benötigen, müssen Sie sie basierend auf bestimmten Bedingungen ausdrucken.

Hinweis: es ist wirklich nicht guter Programmier gleichen Variablennamen zu verwenden und auch Variablennamen mit unterschiedlicher Art wiederzuverwenden (zB: in num_dim, m ist eine Liste und plötzlich m einig ganze Zahl!)

Verwandte Themen