2014-04-11 5 views
0

변수를 인수로 사용하여 함수 내부에서 변수를 변경해야합니다.함수에서 변수 변경

bar = False 

def someFunction(incoming_variable): 
    incoming_variable = True 

someFunction(bar) 

print bar 

false를 반환, 그것은 True를 반환해야합니다

는 여기에 내가 해봤 코드입니다.

어떻게 변수를 변경할 수 있습니까? 당신의 예에서

답변

3

수 없습니다. 할당은 새 값으로 로컬 이름을 리 바인드하고 이전 값을 호출 범위에서 변경하지 않습니다.

한 가지 가능한 해결 방법은 돌연변이가 다시 바인딩되지 않는다는 것입니다. 부울 대신 목록을 전달하고 요소를 수정하십시오.

bar = [False] 

def someFunction(incoming_variable): 
    incoming_variable[0] = True 

someFunction(bar) 

print bar[0] 

이 방법으로 클래스 속성을 변경할 수도 있습니다.

class Thing: 
    def __init__(self): 
     self.value = None 

bar = Thing() 
bar.value = False 

def someFunction(incoming_variable): 
    incoming_variable.value = True 

someFunction(bar) 

print bar.value 

그리고 항상 global입니다.

bar = False 
def someFunction(): 
    global bar 
    bar = True 
someFunction() 
print bar 

뿐만 아니라 자체 수정 클래스.

class Widget: 
    def __init__(self): 
     self.bar = False 
    def someFunction(self): 
     self.bar = True 

w = Widget() 
w.someFunction() 
print w.bar 

그러나 마지막 두와

, 당신은 someFunction에 다른 매개 변수를 전달하는 능력을 잃고, 그래서 그들은 적절하지 않을 수 있습니다. 네가하려는 일에 달렸어.

1

는 :

bar is global variable existing oustide the scope of function someFunction 

Whereas incoming_variable is local variable residing only in the scope of function someFunction 

someFunction(bar) 전화 : 지역 변수 incoming_variable

    • assings 바 (False)의 가치를 평가하는 기능

    당신이 경우 변수 막대를 간단히 변경하십시오 :

    def someFunction(incoming_variable): 
        bar= incoming_variable