2017-01-15 7 views
3

を含む関数は、私は、私のすべての輸入に文を含む関数を作成したいと思います:パイソン、輸入

def imports(): 
    import pandas as pd 
    import numpy as np 
    etc... 

は、モジュールとしての.pyファイルに保存して、私のJupyterノートブックから、その関数を呼び出します。 これは単にノートブックを整理することです。しかし、それはインポートステートメントを含む関数を作成するためのdoesntの仕事をしているようですね? (私はエラーNameError: name 'pd' is not definedを受け取っています)。なぜ誰も知っていますか?

+0

「import pandas as pd」は、変数「pd」を作成する。あなたの場合、変数は関数に対してローカルであり、外部には表示されません。 – DyZ

+0

@DYZそこには方法がありますか?たぶん、グローバルとして「as ...」と宣言しますか? – Radar

答えて

4

あなたのモジュールにしたいすべてのimport文を入れて、あなたは通常、彼らに

contents_of_your_module.py

import pandas as pd 
import numpy as np 
import itertools 
import seaborn as sns 

を置くところのように:グローバル変数としてインポートされたモジュールへのショートカットを宣言

その後、Jupyterからインポートします

from contents_of_your_module import * 

それとも、あなたはモジュールの名前空間を作成し、この

import contents_of_you_module as radar 

を行う。そして、あなたは自分の名前空間を経由してすべてのモジュールにアクセスすることができ、一般的に

radar.pd.DataFrame 
+0

大きな回答といつものように非常に有益。しかし、私はDYZの解決策は私が後になったものだと思う。しかし、thx! – Radar

+0

@Radar私は助けることができてうれしい。 DYZは素晴らしい答えを提供しました。 – piRSquared

3

import pandas as pdは、変数pdを作成します。あなたの場合、変数は関数に対してローカルであり、外部には表示されません。 、代わりに

def imports(): 
    global pd, np 
    import pandas as pd 
    import numpy as np 
+0

変数をグローバルとして宣言することはありますか?私。演技などの面では?そうでなければ、これは私が後にしたものだと思います。 – Radar

+1

とにかく、 'as 'を' import'するだけでグローバルにすることができます。 – DyZ

+0

実際に何らかの形でこれは動作しません – Radar

0

、私は希望あなたがしたいことをすることは非常に悪い習慣であると言います。あなたが描写していることを正確にしたいのであれば、あなたはピジョンソニックな方法でそれをすることはできません。

しかし、これはおそらく動作するソリューションです:

は、すべてのあなたの輸入を処理する必要がありimports.pyと呼ばれるモジュールを、持っているふり:

ファイル:imports.py: import numpy as np import pandas as pd

あなたはあなたのプログラムで機能を持つことができます。

def do_funky_import_from(): from imports import *