2017-10-26 5 views
0

Angenommen, ich habe einige Zeichenfolgen, die niemals eine Schleife verlassen, sondern einen Zahlenzähler, den ich global brauche. Statt ...Ist es möglich, einen String aus einem zurückgegebenen Tupel in einer Zeile zu einem Integer hinzuzufügen?

outside_int = 0 

def string_Grabber(stuff): 

    my_string = '' 
    my_number = 0 

    for i in range(who_cares): 
     #stuff that concatenates my_string 
     if this_happens(): 
      my_number += 1 

    return my_string, my_number 

for things in another_loop: 

    loop_string = string_Grabber(things)[0] 
    outside_int += string_Grabber(things)[1] 

... Gibt es eine Möglichkeit, es in einer Zeile zu tun, so dass ich bis zweimal die (potentiell teuren) Funktion nicht aufrufen? Wie:

loop_string, outside_int = stringGrabber(things)(0, += 1) 

Antwort

4

Es gibt keine Möglichkeit, es in einer Zeile zu tun. Sie können es in Funktion tun:

def string_Grabber(stuff): 

    my_string = '' 
    my_number = 0 

    for i in range(who_cares): 
     #stuff that concatenates my_string 
     if this_happens(): 
      my_number += 1 

    return my_string, my_number + outside_int 
+0

das wahr ist. Ich werde der Funktion nur zusätzliche Argumente hinzufügen, aber danke, dass Sie meine Neugierde unterhalten haben. –

+0

Wenn Sie "outside_int" als Argument in function hinzufügen, wird es nur für die Funktion "local" gemacht. Die globale Variable "outside_int" ändert sich nicht. Fügen Sie es nicht als Argument in der Funktion hinzu. –

1

ich eine schnelle Lösung haben, können Sie eine temporäre Variable fügen Sie die ganze Zahl zu fangen und sie dann auf den globalen Wert hinzufügen, wie unten gezeigt.

outside_int = 0 

def string_Grabber(stuff): 

    return 'string',1 

for things in range(2): 
    strring, tmp = string_Grabber('sample') 
    outside_int +=tmp 
    print(outside_int) 

kehrt Ausgang

1 
2 
Verwandte Themen