특정 함수내에서 사용되는 로컬 변수들의 변수 이름 및 현재 값 등을 알고
싶을 때 사용하는 함수가 바로 locals()라는 파이썬 빌트인 함수가 있습니다.
아래 소스를 보시면 바로 이해가 빠를 것입니다.
def test():
a = 1
b = 1
print (locals()) test() |
여기서 test라는 함수에서 a와 b라는 로컬 변수가 있는데, locals()
함수를 사용하면 이들 변수들의 현재 값을 알수 있습니다.
아래가 실행한 결과입니다.
{'a': 1, 'b': 1} |
locals() 함수는 로컬 변수 이름과 현재 값들을 dict 데이터형으로
돌려줍니다.
아래의 코드와 같이 dict형
데이터 변수의 값을 변경할 수 있지 않을까 해서 한번 시도를 해보았습니다.
def test():
a = 1
b = 1
print (locals())
locals()['a'] = 3
locals()['b'] = 4
print (locals()) test() |
그러나 아래와 같이 locals()로는
로컬 변수의 값을 변경할 수 없습니다.
{'a': 1, 'b': 1} # 첫번째 locals()에서
출력한 값 {'a': 1, 'b': 1} # 두번째 locals()에서
출력한 값 |
그러면 아래 코드는 어떨까요? dict형에서
새로운 로컬 변수 항목을 추가하여 실행시키는 코드입니다.
def test():
a = 1
b = 1
print (locals())
locals()['c'] = a + b
print (locals()) test() |
아래와 같이 새로 추가된 변수의 값은 locals()
함수를 사용하여 변경가능합니다.
{'a': 1, 'b': 1} # 첫번째 locals()에서
출력한 값 {'a': 1, 'b': 1, 'c': 2} # 두번째 locals()에서
출력한 값 |
또 하나의 코드를 보면, 로컬
변수를 locals() 함수로 추가하여 값을 계산한 다음, 다시
다른 값으로 변경하는 코드입니다.
def test():
a = 1
b = 1
print (locals())
locals()['c'] = a + b
print (locals())
locals()['c'] = 10
print (locals()) test() |
위의 코드의 ‘c’라는 새로 추가한
로컬 변수는 언제든제 값이 변경가능하고 기존에 있던 ‘a’와 ‘b’ 변수의
값을 변경할 수가 없습니다.
{'a': 1, 'b': 1} # 첫번째 locals()에서
출력한 값 {'a': 1, 'b': 1, 'c': 2} # 두번째 locals()에서
출력한 값 {'a': 1, 'b': 1, 'c': 10} # 세번째 locals()에서
출력한 값 |
댓글 없음:
댓글 쓰기