다른 파일에서 변수를 가져 오시겠습니까?


134

한 파일에서 다른 파일로 변수를 가져 오는 방법은 무엇입니까?

예 : file1변수가 x1있고 x2전달하는 방법은 file2무엇입니까?

한 변수에서 다른 변수로 모든 변수를 가져 오는 방법은 무엇입니까?

답변:


146
from file1 import *  

file1의 모든 객체와 메소드를 가져옵니다.


54
그러나 이것은 일반적으로 하지 말아야 할 일 입니다.
David Cain

7
데이비드 노트,이이 오염 네임 스페이스와 표준 배포판에 포함하여 다른 모듈의 개체 및 기능 마스킹에 의해 치명적인 결과를 초래할 수 있습니다
ennuikiller

11
나는 그것을 시도했지만, 이 오류가 발생하기 때문에 파이썬이 file1을 찾을 수없는 것 같습니다 :ImportError: No module named file1
Hilder Vitor Lima Pereira

4
당신은 있었나요 __init__.py파일을? 자세한 내용은 여기 를 참조하십시오.
J0ANMM

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
전달할 변수가 1000 개인 경우?
Ofek

1
@Ofek 그냥 사용하십시오 import file1 .
Ashwini Chaudhary

1
변수를 가져 오지 않습니다 : \
Ofek

7
file1.varX각 파일 앞에 추가해야하지만 변수를 가져옵니다 .
zmo

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의 값은 같지만 변수는 동일하지 않습니다. 예를 들어, x1을 수정하는 파일 1에서 함수를 호출 한 다음 기본 파일에서 변수를 인쇄하려고 시도하면 수정 된 값이 표시되지 않습니다.


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당신은 그들이 것처럼 같은 다른 파일의 내용을 액세스 할 수있는
자바 나 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.