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


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

x1 및 x2를 명시 적으로 가져 오는 것이 가장 좋습니다 .

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.