Python

Python, for문 내에서 함수 사용시 함수의 변수선언의 차이점

hwangyoungjae 2016. 4. 21. 21:02

>>> def listtest(a=[]):

             b=[]

             a.append("A")

             b.append("B")

             print(a)

             print(b)

             

>>> for t in range(3):

             listtest()

             

['A']

['B']

['A', 'A']

['B']

['A', 'A', 'A']

['B']

 

위와같은 결과를 볼수 있음

 

즉 for문으로 함수를 호출시 인자로 입력한 a=[] 는 처음실행시 한번만 호출된후  넘어가기되지만

함수안에서 선언한 b=[] 변수는 지속적인 초기화가 가능함

굳이 for문이 아니더라도 같은 스크립트 안에서는 인자로 받은 변수는 초기화가 되질 않음 확인

 

하지만, 인자를 숫자로 받고 숫자를 1씩 증가시켰을때는 초기화가 됨

아래와 같이...

>>> def inttest(a=1):

             b=1

             a += 1

             b += 1

             print("a : {0}".format(a))

             print("b : {0}".format(b))

 

>>> for t in range(3):

             inttest()

             

a : 2

b : 2

a : 2

b : 2

a : 2

b : 2