문자열을 변수명으로 변환

Published by onesixx on

https://www.delftstack.com/ko/howto/python/python-string-to-variable-name/

Python

locals 와 global의 현재 namespace (전역, 지역, builtin)을 딕셔너리(dict)형식으로 반환.

locals()가 실행되어지는 함수내의 지역 namespace 들을 정리

globals는 전역, 지역, builtin 정보 모두 dict 형태

Python

globals() locals()

globals()

현재 전역 기호 테이블의 사전을 반환합니다.

전역 심볼테이블은 globals()함수를 사용하여 액세스 할 수있는 프로그램의 전역 범위와 관련된 모든 정보를 저장합니다.

Python

여기서 가장 먼저하는 일은input()함수를 사용하여 사용자로부터 입력을 받고 그 안에Enter a string for a variable name:문자열을 전달하는 것입니다. 그런 다음 사용자가 입력 할 값이 무엇이든 해당 값은user_input변수에 저장됩니다.

여기서는 사용자가user_input에 저장 될 문자열 값으로apple을 입력 할 것으로 예상합니다. 사용자가apple이외의 값을 입력하면NameError: name 'variable' is not defined오류가 발생합니다. apple의 값도 인쇄 한 다음 나중에 코드에서 유형을 확인하기 때문입니다.

사용자가 올바른 값을 입력 한 경우globals()를 사용하여 전역 사전을 수정하여 전역 사전을 수정하고apple변수에 값을 할당 할 수 있습니다. 여기서는apple변수에50을 할당했습니다

Python

locals()

현재 지역 기호 테이블의 사전을 반환합니다. 

locals()함수를 사용하여 로컬 기호 테이블에 액세스 할 수 있습니다. locals()함수는globals()함수와 거의 동일한 방식으로 작동합니다.

유일한 차이점은locals()는 로컬 심볼 테이블에 액세스 할 수 있고, globals()는 글로벌 심볼 테이블에 액세스하여 사전을 반환 할 수 있다는 것입니다.

Python

이 코드는globals()와 동일한 방식으로 작동합니다. 유일한 차이점은 여기서locals()함수를 사용했다는 것입니다

exec()를 사용

 exec()함수는 Python 프로그램을 동적으로 실행하는 데 사용됩니다.
문자열 값 Elon을 저장하는name변수가 있습니다.

Python

exec()함수 내에는 각각 문자열 값과 10 진수 값에 대한 자리 표시 자로 사용되는%s%d가 있습니다. 이는 할당 연산자=의 도움으로 문자열에 정수 값을 할당한다는 것을 의미합니다. %s%d는 모두 따옴표=로 묶여 있습니다. 그런 다음 내부에 두 가지가있는 괄호가 있습니다. 첫 번째는 생성 한 변수, 즉Elon값을 포함하는name이고 두 번째는 정수100입니다.

여기서name변수 대신 해당 변수 내의 값이 대체됩니다. 정수100Elon에 할당됩니다. Elon은 변수 이름이되며이를 인쇄하면100이 출력으로 표시됩니다.

eval()

https://bslife.tistory.com/65

col1, col2, col3 …. col999 의 변수값을 출력할려면,

Python

eval() 함수을 활용 (매개변수로 받은 expression (=식)을 문자열로 받아서, 실행)

Python

eval()함수는 그 자체로 취약점이 될 수 있기 때문에 주의해서 사용해야 함

Categories: Python Basic

onesixx

Blog Owner

guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x