2013-06-18 5 views

답변

9

하지 않습니다. 동적 변수를 생성하는 것은 거의 좋은 생각이 아니며 함수 내부에서 로컬 이름을 만들려고하면 어렵고 성능에 큰 영향을줍니다.

대신 사전을 사용

lists = {} 
lists[strs] = [] 
lists[strs].append(somevalue) 

네임 스페이스에서 이름을 조회하는 코드 단지 기본 사전입니다 그것은 훨씬 더 쉽고 같은 사전을 만들 청소기입니다..

(쓰기 가능한) 사전을 반환하는 globals() 함수를 사용하여 전역 (모듈 네임 스페이스)에 계속 액세스 할 수 있지만 locals() 함수 로컬 네임 스페이스에 액세스 할 수는 있지만 일반적으로 함수에 로컬 네임 스페이스 액세스로 영향을주지 않습니다 최적화되었습니다.

파이썬 2에서이 기능에 exec 문을 사용하여 해당 최적화를 제거 할 수 있습니다. 파이썬 3에서, 더 이상 최적화를 전환하지 수 exec 문이 exec() function로 대체되었습니다로서, 의미 컴파일러는 더 이상 로컬 네임 스페이스에 잠재적으로 쓰고 있음을 확실하게 감지 할 수 없습니다.

+0

답변과 통찰에 감사드립니다. – picstand

1

당신은 globals()를 사용할 수 있습니다

>>> strs = "temp1" 
>>> globals()[strs] = [] 
>>> temp1 
[] 

그러나 더 적합 할 것 같은 목적을 위해 딕셔너리를 사용하여 :

>>> dic = {strs:[]} 
>>> dic["temp1"] 
[] 
관련 문제