2014-01-20 1 views
0

두 개의 사전을 사용하여 함께 추가하는 함수가 있습니다. (이 함수 내에서 할 말대로)Python : Dictionary가 내 함수에서 벗어나지 않습니다.

ReportTwoAddedDictionaries(FreePoints,FlyPoints) 

제대로 DictTotal를 출력 : 나는 기능을 실행

from collections import Counter 

def ReportTwoAddedDictionaries(DictOne,DictTwo): 


    Dict1 = Counter(DictOne) 
    Dict2 = Counter(DictTwo) 
    DictTotal = Dict1 + Dict2 

    print DictTotal 

    DictTotal = dict(DictTotal) 
    print DictTotal 
    return DictTotal 

. 나는 함수의 외부에서 시도 할 때, 그것을 실행 한 후, 그것은 DictTotal이 비어 반환 이유를 빈

print DictTotal 

어떤 생각을 출력하지만 함수 내에서 고급 인쇄? 감사합니다.

+0

DictTotal은 특별히 전역 변수로 지정하지 않는 한 로컬 변수입니다. – miah

답변

2

반환 값을 캡처해야합니다. return 문은 호출자의 공간에서 마술처럼 새로운 변수를 생성하지는 않습니다.

DictTotal = ReportTwoAddedDictionaries(FreePoints,FlyPoints) 

P. 반환 값에 사용하는 변수가 함수에서 반환 된 것과 동일한 이름 일 필요는 없습니다.

ReportTwoAddedDictionaries(FreePoints,FlyPoints) 

반환 값은 어디에도 저장되지 않고 :이 메소드를 호출

foo = ReportTwoAddedDictionaries(FreePoints,FlyPoints) 
print foo 
+0

감사합니다! 그건 의미가 있습니다. – InfinteScroll

0

. 인쇄 된 내용은 기능 내에 print입니다.

함수 외부에서 print DictTotal을 호출하면 이전에 변수를 선언하지 않은 이상 오류가 발생합니다.

이 같은 현재 범위에서 반환 된 변수를 저장하는 경우 :

DictTotal = ReportTwoAddedDictionaries(FreePoints,FlyPoints) 
print DictTotal 

당신의 요청에 따라 인쇄 된 사전을 볼 수 있습니다.

0

또는 DictTotal을 전역 변수로 정의 할 수 있습니다.이 변수는 기능 범위 외부에서 볼 수 있지만 덜 권장됩니다.

from collections import Counter 

def ReportTwoAddedDictionaries(DictOne,DictTwo): 

    global DictTotal 
    Dict1 = Counter(DictOne) 
    Dict2 = Counter(DictTwo) 
    DictTotal = Dict1 + Dict2 

    print DictTotal 

    DictTotal = dict(DictTotal) 
    print DictTotal 
    return DictTotal 

ReportTwoAddedDictionaries({1: 2},{'1' : '3'}) 

print DictTotal 
관련 문제