別のファイルから変数をインポートしますか?


134

変数をあるファイルから別のファイルにインポートするにはどうすればよいですか?

例:file1変数がx1あり、x2それらを渡す方法はfile2

すべての変数を別の変数にインポートするにはどうすればよいですか?

回答:


146
from file1 import *  

file1のすべてのオブジェクトとメソッドをインポートします


54
ただし、これは一般的に行うべきではないことに注意してください
David Cain

7
Davidが指摘するように、これは名前空間を汚染し、標準ディストリビューションを含む他のモジュールからオブジェクトと関数をマスクすることによって壊滅的な結果をもたらす可能性があります
ennuikiller

11
私はそれを実行しようとしましたが、見つけることができないのpythonのように思えるFILE1を、私はこのエラーを取得していますので、:ImportError: No module named file1
Hilderビトー・リマ・ペレイラ

4
あなたは持っていなかった__init__.pyファイルを?詳細はこちらをご覧ください。
J0ANMM 2016

76

file1内部にインポートfile2

file2の名前空間をあふれさせることなく、file1からすべての変数をインポートするには、以下を使用します。

import file1

#now use file1.x1, file2.x2, ... to access those variables

すべての変数をfile1からfile2の名前空間にインポートするには(非推奨):

from file1 import *
#now use x1, x2..

ドキュメントから:

from module import *モジュールレベルでの使用は有効ですが、通常はお勧めできません。1つには、これはPythonが本来持っている重要なプロパティを失うことです—各トップレベル名がお気に入りのエディターの単純な「検索」関数によって定義されている場所を知ることができます。また、一部のモジュールで追加の関数またはクラスが増加した場合、将来的に問題が発生する可能性があります。


1
渡す変数が1000個ある場合
Ofek 2013年

1
@Ofek使用してくださいimport file1
Ashwini Chaudhary 2013年

1
変数はインポートされません:\
Ofek

7
変数はインポートされますが、file1.varXファイルごとに先頭に追加する必要があります。
zmo 2013年

43

x1x2を明示的にインポートするのが最善です:

from file1 import x1, x2

これによりfile1、での作業中に、変数や関数との不要な名前空間の競合を回避できますfile2

ただし、本当に必要な場合は、すべての変数をインポートできます。

from file1 import * 

11

実際、これは実際に変数をインポートすることと同じではありません:

from file1 import x1
print(x1)

そして

import file1
print(file1.x1)

ただし、インポート時のx1とfile1.x1の値は同じですが、同じ変数ではありません。たとえば、file1でx1を変更する関数を呼び出してから、メインファイルから変数を出力してみます。変更された値は表示されません。


5

マルクの反応は正しいです。実際には、変数のメモリアドレスを出力してprint(hex(id(libvar))、アドレスが異なることがわかります。

# mylib.py
libvar = None
def lib_method():
    global libvar
    print(hex(id(libvar)))

# myapp.py
from mylib import libvar, lib_method
import mylib

lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))

3

script1.py

title="Hello world"

script2.pyは、script1変数を使用する場所です

方法1:

import script1
print(script1.title)

方法2:

from script1 import title
print(title)

1

Pythonあなたは、彼らがいるかのようにのように他のファイルの内容にアクセスすることができます
Javaまたは任意のOOPベースの言語のような他の言語に比べて、ライブラリーのいくつかの種類あり、これは本当にクールです。

これにより、ファイルの内容にアクセスしたり、ファイルにインポートして処理したり、何かを実行したりできます。そして、それがPythonデータ科学や機械学習などに非常に好まれている言語である主な理由です。

そしてこれは project structure この

および秘密鍵が存在する.env file場所から変数にアクセスしている場所API links

一般的な構造:

from <File-Name> import *

0

first.py:

a=5

second.py:

import first
print(first.a)

結果は5になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.