Python에서 문자열을 변수 이름으로 변환
파이썬에서는 문자열 값을 변수 이름으로 변환 할 수있는 다양한 방법이 있습니다. 이 기사에서는이를 달성 할 수있는 다양한 방법에 대해 설명합니다.
어떤 사람들은 파이썬 프로그램이 실행되는 동안 변수 이름을 동적으로 정의하기 위해 이렇게 할 수 있습니다. 아래 표시된 방법을 사용하여 문자열을 변수 이름으로 변환하는 것은 일부 문제가 발생할 수 있으므로 프로덕션 용 소프트웨어를 개발하는 동안 권장되지 않습니다. 네, 가능 합니다만,주의 해주세요.
Python에서globals()
및locals()
를 사용하여 문자열을 변수 이름으로 변환
globals()
Python의globals()
함수는 현재 전역 기호 테이블의 사전을 반환합니다. 전역 심볼 테이블은globals()
함수를 사용하여 액세스 할 수있는 프로그램의 전역 범위와 관련된 모든 정보를 저장합니다.
user_input = input("Enter string for variable name: \n")
globals()[user_input] = 50
print(apple)
print(type(apple))
출력:
여기서 가장 먼저하는 일은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
을 할당했습니다.
locals()
Python의locals()
함수는 현재 지역 기호 테이블의 사전을 반환합니다. locals()
함수를 사용하여 로컬 기호 테이블에 액세스 할 수 있습니다. locals()
함수는globals()
함수와 거의 동일한 방식으로 작동합니다. 유일한 차이점은locals()
는 로컬 심볼 테이블에 액세스 할 수 있고globals()
는 글로벌 심볼 테이블에 액세스하여 사전을 반환 할 수 있다는 것입니다.
user_input = input("Enter string for variable name: \n")
locals()[user_input] = 50
print(apple)
print(type(apple))
출력:
이 코드는globals()
와 동일한 방식으로 작동합니다. 유일한 차이점은 여기서locals()
함수를 사용했다는 것입니다.
Python에서exec()
를 사용하여 문자열을 변수 이름으로 변환
이 작업을 수행하는 또 다른 방법은 Python에서exec()
함수를 사용하는 것입니다. exec()
함수는 Python 프로그램을 동적으로 실행하는 데 사용됩니다. 문자열 값Elon
을 저장하는name
변수가 있습니다.
name = 'Elon'
exec("%s = %d" % (name,100))
print(Elon)
출력:
100
exec()
함수 내에는 각각 문자열 값과 10 진수 값에 대한 자리 표시 자로 사용되는%s
및%d
가 있습니다. 이는 할당 연산자=
의 도움으로 문자열에 정수 값을 할당한다는 것을 의미합니다. %s
및%d
는 모두 따옴표=
로 묶여 있습니다. 그런 다음 내부에 두 가지가있는 괄호가 있습니다. 첫 번째는 생성 한 변수, 즉Elon
값을 포함하는name
이고 두 번째는 정수100
입니다.
여기서name
변수 대신 해당 변수 내의 값이 대체됩니다. 정수100
이Elon
에 할당됩니다. Elon
은 변수 이름이되며이를 인쇄하면100
이 출력으로 표시됩니다.