2021. 3. 2. 20:53ㆍ꿀팁 분석 환경 설정/파이썬 개발 팁
1. Import Everything
Scenario
utils.py에 있는 모든 함수와 클래스를 불러오기
def add_two(num: int):
return num + 2
def multiply_by_two(num: int):
return num * 2
a = 5
Solution
utis.py에 __all__에 넣으면 된다!
__all__ = ["add_two", "multiply_by_two"]
def add_two(num: int):
return num + 2
def multiply_by_two(num: int):
return num * 2
a = 5
from utils import *
num = 3
print(add_two(num))
print(multiply_by_two(num))
print(a)
5
6
Traceback (most recent call last):
File "main.py", line 6, in <module>
print(a)
NameError: name 'a' is not defined
이렇게 하면, a는 무시가 되고, 원하는 것만 할 수 있다 __all__!
2. Combine Multiple Files
Scenario
아래와 같은 directory를 가졌다고 가정해보자.
.
├── data_modules
│ ├── load_data.py
│ └── process_data.py
└── main.py
In load_data.py
class DataLoader:
def __init__(self, data_dir: str):
self.data_dir = data_dir
def load_data(self):
print(f"Loading data from {self.data_dir}")
In process_data.py
class DataProcessor:
def __init__(self, data_name: str):
self.data_name = data_name
def process_data(self):
print(f"Processing {self.data_name}")
2개의 다른 파일들로부터 클래스를 사용하기 위해서는 각각의 파일에서 각각의 클래스를 import 했어야 함
from data_modules.load_data import DataLoader
from data_modules.process_data import DataProcessor
data_loader = DataLoader('data/')
data_loader.load_data()
data_processor = DataProcessor('data1')
data_processor.process_data()
이 방법이 일반적이지만, 아래처럼 한꺼번에 하는 방법이 없을까?!
from data_modules import DataLoader, DataProcessor
Solution
__init__. py에 넣는 것이다!
in __init__.py
from .load_data import DataLoader
from .process_data import DataProcessor
위와 같이 init 파일에 2개를 넣어 놓는다.
여기서. 을 사용하는 이유는 같은 디렉터리에 있는 load_data.py나 process_data.py를 사용하기 때문이다.
from data_modules import DataLoader, DataProcessor
data_loader = DataLoader('data/')
data_loader.load_data()
data_processor = DataProcessor('data1')
data_processor.process_data()
3.Run a Directory like a Main Script
Scenario
아래와 같은 디렉토르는 다음과 같음.
.
└── data_modules
├── __init__. py
├── load_data.py
├── main.py
└── process_data.py
작동시키려면 다음과 같이 해야 한다.
python data_modules/main.py
사용자 또는 팀원이 단순히 상위 디렉터리를 실행하여 코드 main.py 파일을 실행하는 것을 더 간단하게 만들고 싶을 수 있다.
python data_modules
이렇게 하면 python data_modules/main.py로 하는 것보다 나을 수 있다.
왜냐하면 더 짧기 때문에 ㅎ?
그래서 사용자는 특정 폴더에서 특정 파일을 알 필요가 없어진다!
Solution
이것은 __main__. py가 유용 할 때입니다. 최상위 디렉토리를 실행할 때 실행하려는 스크립트를 __main__.py로 변경하기 만하면됩니다. 이 예에서 main.py는 __main__.py가 된다.
# Rename main.py to __main__.py
mv data_modules/main.py data_modules/__main__.py
이렇게 바뀐다!
.
└── data_modules
├── __init__. py
├── load_data.py
├── __main__. py
└── process_data.py
끝!
python data_modules
굉장히 아주 좋은 것을 배운 글이었다.
정리한 것을 보면 다음과 같다.
- Controlling what to import when using import *
- Shortening your import statements
- Running the top-level directory as the main script
신기한 글 (패키지 만드는 법)
신기한 글(tree 만들기)
'꿀팁 분석 환경 설정 > 파이썬 개발 팁' 카테고리의 다른 글
디버깅) CyberBrain (0) | 2021.05.08 |
---|---|
초기 Data Science Project 폴더 생성 및 tree strcture 확 (1) | 2021.04.24 |
memory profiler 를 활용해서 메모리 사용량 확인하기 (0) | 2021.03.05 |
[TIP] 에러 발생할 때 Logging 파일 생성 및 적재하는 코드 (0) | 2020.11.15 |
ML 프로젝트시 폴더 구조화 하는 방법 관련 글 (0) | 2020.10.08 |