2013-07-05 2 views
0

에 정의 된 변수는 나는 몇 기능을 중첩 된 내부에 많은 기능을 가지고있다. 이 함수의 범위를 변경하여 함수를 호출하지 않고도 함수를 액세스/변경하도록 허용하면서 해석기에서 보물을 인쇄 할 수 있습니까?액세스 기능

+1

필요한 경우 코드 구조를 다시 생각해 보시기 바랍니다. –

답변

3

전역으로 설정해야합니다. 함수의 지역 변수는 액세스 할 수 없으며, 중첩되어 있지 않거나 그렇지 않습니다.

그냥 은 잘 세계적인 작품으로treasure 접근 :

treasure = "Success!" 

def primary(input): 
    def second(): 
     print "something" 

    def third(): 
     print treasure 

함수의 범위 내에서 treasure을 변경하려면 global 키워드로를 글로벌을 선언합니다.

treasure = "Success!" 

def primary(input): 
    def second(): 
     print "something" 

    def third(): 
     global treasure 
     treasure = 'changed!' 
     print treasure 

    third() 
0

함수 third()가 보물 앞에 "global"키워드를 추가하는 경우. 이렇게하면 다른 함수가 해당 변수를 사용할 수 있습니다.

코드의 시작 부분에 var를 정의하는 다른 방법이 있습니다.이 방법이 훨씬 좋아 보이며, 어떻게해야하는지 배웠습니다.

treasure = "Success!" 

def second(): 
    print "Something." 

def third(): 
    print treasure 

third() 

행운을 빈다.

+0

'global' 키워드를 사용하지 않으면 변수를 수정할 수 없습니다 :'>>> treasure = "Success!" >>> def fourth() : ... 보물 = "섬!" ... >>> fourth() >>> 보물 '성공!' – 2rs2ts