2017-11-30 12 views
0

함수의 매개 변수를 사용하여 파이썬에서 데이터 프레임 및/또는 객체의 동적 이름을 만들고 싶습니다. 나는 약 40 개의 서로 다른 이름을 가지고 있으므로 함수에서 이것을하기에 정말 우아 할 것이다. 이를 수행하는 방법이 있습니까 아니면 '사전'을 통해이 작업을 수행해야합니까? 나는 '임원'이 위험하다고 (이 일을 할 수는 없다) 읽었다. SAS는 내가오고있는 매크로에 대해이 기능을 제공합니다. 여기에 내가 뭘하려고 오전의 예입니다 (사용은 '@'설명을 위해) :함수 매개 변수를 사용하여 객체 또는 데이터 프레임의 이름을 구성하십시오.

def TrainModels (mtype): 
    [email protected] = ExtraTreesClassifier() 
    [email protected]([email protected], [email protected]) 
TrainModels ('FirstModel') 
TrainModels ('SecondModel') 

답변

1

당신은 이것에 대한 사전을 사용할 수 있습니다 모든

models = {} 

def TrainModels (mtype): 
    models[mtype] = ExtraTreesClassifier() 
    models[mtype].fit() 
0

첫째, 어떤 이름을 TrainModels 함수 내에서 정의하는 것은 해당 함수에 대해 로컬이므로 해당 프로그램의 나머지 부분에서는 액세스 할 수 없습니다. 따라서 전역 이름을 정의해야합니다.

파이썬의 모든 것은 전역 네임 스페이스를 포함한 사전입니다. 새로운 전역 이름을 다음과 같이 동적으로 정의 할 수 있습니다.

my_name = 'foo' 
globals()[my_name] = 'bar' 

이것은 끔찍한 일이므로 절대로하지 마십시오. 코드에 너무 많은 간접 지정을 추가합니다. 다른 사람 (또는 코드가 마음에 들지 않는 3 개월 만에) 코드를 읽고 다른 곳에서 사용되는 'foo'를 보면, 그 사람이 어디서 왔는지 파악할 수 있습니다. 코드 분석 도구는 당신을 도울 수 없습니다.

저는 Milkboat 제안대로 dict를 사용합니다.

+0

대단한 의견입니다. 감사합니다. – PiePhonic