2017-11-07 2 views
-4

に別のものをロードすることはできませんが、私はそれに二つの機能を持つPythonのファイルを持っているロード一つの機能が、Pythonの

from bar import * 

ので、関数foo1foo2の両方が利用可能になります。

<function foo1 at 0x7fd6e489fcf8> 

しかし、その後、私は二番目の印刷しよう:

print(foo2) 

そして私通訳は喜んでそれはあります私に語った後

print(foo1) 

:私は、一つ一つを印刷しようとした場合エラーを取得します。

NameError: name 'foo2' is not defined 

Wこれのいくつかの原因は帽子ですか?たとえば、foo1がPython 3の構文で書かれていて、foo2がPython 2の構文で書かれているとしますか?それ以外に何ができますか?

注:この質問の書式設定に使用したthis questionのおかげです。

EDIT:コメントで要求されるようにここでbar.pyの別のバージョンでは、です:

def foo1(): 
    pass 

def foo2(): 
    pass 
+0

bar.pyをコピーして、書式設定せずに質問に貼り付けます。 'NameError:name 'foo2'が定義されていません。'関数が 'foo2()'が存在しないことを意味します。 –

+2

私は 'bar.py'に字下げの問題があると思います。 – Barmar

+1

そのファイルの問題を再現できません。 – Barmar

答えて

0

bar.pyの別のバージョンがバーの前に、あなたのPYTHONPATHにリストされているファイルシステムのパスに存在する場合、これが発生する可能性があります。あなたは実際に編集中です。 Pythonインタプリタは、pythonパスで最初に見つかったbar.pyを、現在の作業フォルダの後に使用します。

+0

これは答えになるかもしれません。 – miradulo

+0

まあ確かに、私は「これだけ起こる」とは言わなかったのです。それは可能な答えです。私はそのような文言を変更しました。 – Joel