반응형
특정 함수내에서 사용되는 로컬 변수들의 변수 이름 및 현재 값 등을 알고 싶을 때 사용하는 함수가 바로 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()에서 출력한 값 |
반응형
'파이썬 (Python) > 파이썬 빌트인 함수' 카테고리의 다른 글
[파이썬] 전역 변수들의 상태 등을 보여주는 globals() 함수 (0) | 2021.06.29 |
---|---|
[파이썬] input 함수의 split 메서드로 여러 개의 값을 입력받는 법 (0) | 2021.06.29 |
파이썬의 input()을 사용한 입력방법 (0) | 2021.06.27 |