2017-11-30 5 views
0

関数のパラメータを使用して、Pythonでデータフレームやオブジェクトの動的名を作成したいと考えています。私は約40の異なる名前を持っていますので、これを関数で行うのは本当にエレガントです。これを行う方法はありますか?これを「dict」で行う必要がありますか?私は、「エグゼクティブ」は危険である(これを働かせることはできない)ということを読んでいます。 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関数内の定義は、その関数のローカルなので、残りのプログラムではアクセスできません。したがって、グローバル名を定義する必要があります。

Pythonのすべては、グローバル名前空間を含む辞書です。

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

これはひどいです、あなたはそれを行うべきではありません:次のように動的に新しいグローバル名を定義することができます。あなたのコードにあまりにも多くの間接参照を追加します。誰か他の人(またはコードがあなたの心の中で新しくなくなってから3ヶ月で自分自身)がコードを読み取り、どこか別の場所で使われている 'foo'を見ると、どこから来たのか分かりにくいでしょう。コード解析ツールはあなたを助けることができません。

Milkboatが示唆するように私はdictを使います。

+0

本当にありがとうございました! – PiePhonic

関連する問題