2017-09-15 6 views
0

この質問はどこでも答えられるとは思われません。 MacBook Pro OSX Sierra、Pycharm CE、Python 3.6.0 :: Anaconda 4.3.1(x86_64)。Python3:ファイルからのインポート機能が初めてしか動作しないのはなぜですか?

こんにちは、私はファイルから関数をインポートしようとし、それは動作します。 次に、ファイルの関数を変更し、インポートが機能しません。関数の操作は変更されません。 私は関数をdelし、ファイルから再インポートしてもまだ動作しません。

例、ファイルnew.pyで

def new(inp): 
    return(inp) 

それから私は、インポートおよびコール:

from new import new 
new(9) 
Out[249]: 
9 

ああ、私は、ファイル内の関数を変更したいです。

def new(inp): 
    if type(inp) == str: 
     this = inp + "five" 

    return(this) 

from new import new 
new(9) 
Out[250]: 
9 

new.py変更はまだわずか修飾されていない入力 "INP" を出力します。私は、関数の名前を変更した場合、私は

del new 
from new import new 

違いを確認していない場合 同じ取引(!=ファイル名)。

+0

ことができるようになります

from importlib import reload 

でそれをインポートする必要があります。答え[ここ](https://stackoverflow.com/questions/1254370/reimport-a-module-in-python-while-interactive)は役に立つかもしれません。 – roganjosh

+0

'inp'が' str'ではないので 'type(inp)== str'は' False'です... –

+0

文字列が必要な場合は、文字列を渡します。 'new( '9')' –

答えて

2

Python 2では、これはreloadコマンドで処理されましたが、デフォルトではPython 3には含まれていません。あなたは、その後、あなたがiPythonを使用しているように見えますimport newreload(new)

+0

これはうまくいかないようです。 処理は何ですか? from importlibインポートリロード 新品から新品 ? –

+0

'new new import'ではなく、' import new'(モジュール全体をインポートする方が一般的には良いアイデア)です。私は思っていませんが、リロードが特定の機能をリロードすることが可能であるかわかりません – MiKo

+0

私の同僚はここで私を助けました: 1.インポートimportlib 2. importlib.reload(new)#ファイル 3. new.new )#file.function –

関連する問題