2017-10-26 12 views
0

예를 들어 루프를 떠나지 않는 문자열이 있지만 전역으로 필요한 숫자 카운터가 있다고 가정합니다. 대신 ...String을 할당 할 수도 있지만 반환 된 튜플의 정수를 한 줄에 추가 할 수 있습니까?

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] 

내가 두 번 (잠재적으로 비싼) 함수를 호출 할 필요가 없도록 ... 한 줄에 할 수있는 방법이 있나요? Like :

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

답변

4

한 줄로 처리 할 방법이 없습니다. 당신은 그것을 내부 기능을 수행 할 수 있습니다 내가 한 빠른 해결책이

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

. 함수에 추가 인수를 추가하겠습니다. 그러나 호기심을 즐겁게 해줘서 고맙습니다. –

+0

함수에 "outside_int"를 인수로 추가하면 함수에서만 로컬이됩니다. 전역 변수 "outside_int"는 변경되지 않습니다. 함수에 인수로 추가하지 마십시오. –

1

, 당신은 정수를 잡을 후 아래 그림과 같이 전역 값에 추가 할 수있는 임시 변수를 추가 할 수 있습니다.

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) 

반환 출력 사실

1 
2