2013-05-27 3 views
2

저는 문자열에있는 이름을 사용하여 변수 값을 안정적으로 설정하고 가져 오는 방법을 찾고자했습니다. 이 근처에서 원격으로 찾을 수있는 것은 항상 작동하지 않는 것 같습니다. 변수는 모든 모듈에있을 수 있으며 해당 모듈을 가져옵니다.exec/eval의 대안은 무엇입니까?

변수의 값을 가져오고 설정하는 안전하고 올바른 방법은 무엇입니까?

추신 - 그들은 작동 것이지만

+1

당신이 자신을 쓴 그 모듈 위치 :

대신, 더 나은 딕셔너리를 사용합니까? 당신은 여기서 분명히 잘못된 것을하고 있습니다. 이 방법으로 변수에 액세스하는 것은 매우 만족스럽지 않습니다. 당신이하려는 일의 몇 가지 예를 보여주십시오. –

+0

내가 줄 수있는 유일한 코드 예제는 eval과 exec를 사용하는 것입니다. 그래서이 변수가 어디서 어떻게, 어디에 있는지를 배우려는 노력에서 벗어나 문자열 코드에서 컴파일 된 요구에 의존하지 않고 더 직접적으로 액세스하려고한다고 생각합니다. 약간의 배경 지식을 제공하기 위해 기본적으로 미디어 백엔드 시스템이며 특히 모호한 단서가 있지만 게을러서 너무 게으른 사람들을위한 것입니다. 그것은 일종의 "tv"경험을 수정하고 만들어내는 다리의 일종이지만, 프로그래머가 아닌 데이터 파일에서 일어나는 일을 세미 스크립트로 작업 할 수있는 서브 시스템을 가지고 있습니다. – user2424005

답변

3

를 파이썬 와서 내가 newb으로있어, 일반적으로 프로그램 자체에 의미를 베어링 변수 이름을 사용하는 것이 좋습니다되지 않습니다. (다른 답변에서 가져온 수정 된 코드)

mydict = {'spam': "Hello, world!"} 
mydict['eggs'] = "Good-bye!" 
variable_name = 'spam' 
print mydict[variable_name] # ==> Hello, world! 
mydict[variable_name] = "some new value" 
print mydict['spam'] # ==> "some new value" 
print mydict['eggs'] # ==> "Good-bye!" 

+0

나는이 솔루션을 향해 몸을 기울이고 있었고, 내가 어떤 방법을 사용하지 않았는지 궁금했다. 파이썬에는 많은 정보가 있습니다. 특히 오래된 2에서 새로운 2로, 그리고 3 로의 전환은 현재와 사용 가능한 것을 구분하는 많은 정보입니다. – user2424005

1
spam = "Hello, world!" 
variable_name = 'spam' 
print globals()[variable_name] # ==> Hello, world! 
globals()[variable_name] = "some new value" 
print spam # ==> some new value 
+8

나는 기술적으로 정확한 경우에도 이것을 downvote 유혹입니다. 스스로 선언 한 파이썬 초보자에게 자신의 목표를 달성하는 최악의 방법을 가르쳐주는 이유는 무엇입니까? –

+0

@TimPietzcker : 네 말이 맞아. 나는 정말로 내가 무엇을해야했는지에 관해 정말로 모르고 있었다. 그러나 나는 단지 이것을했다. – icktoofay