파이썬에서는 모듈을 다룰 수 있습니다
본인이 직접 만들 수도 있구요, 다른 사람이 만든 것을 가지고 올 수도 있습니다
import라는 것을 써서 말이죠
모듈로 관리하게 되면 기능을 나누어서 관리할 수 있습니다
그래서 관리도 용이하고 사용하기도 편하죠
만약 내가 현재 A 라는 기능을 쓰고 있는데 '아 언젠가는 다시 쓸 것 같은데?' 라고 생각해서 파일을 만들었습니다
그리고 B라는 작업을 하는데 이때 A라는 작업이 필요하게 되었어요
근데 B라는 파일에 다시 A의 기능을 코딩을 한다?
물론 해도 좋지만 귀찮고, 시간 낭비에 좀 비효율적이죠
A라는 파일이 이미 있는데 굳이 만들 필요가 없죠
이럴때 import를 이용해서 모듈을 가지고 옵니다
저는 이 모듈 실습을 위해 총 4개의 파일을 준비했어요
빨간색 선을 기준으로 왼쪽이 메인, 오른쪽이 모듈이라고 생각하시면 됩니다.
각 파일은 아래와 같은 내용이 적혀있습니다
2번 파일은 sum 함수가 들어있어요
이 기능은 a 라는 타입이 int가 아니면 더할 수 없다고 나오고요
int면 둘 값을 더해서 return 해줍니다.
3번 파일은 __name__ == "__main__" 이라는 기능을 소개하는 파일이에요
이것에 대한 설명은 밑에서 할게요
일단은 3번 파일은 이런 내용이라는 것입니다.
4번 파일은 클래스가 있어요
Math라는 클래스와 그 밑에 sum이라는 함수가 있네요
그리고 클래스에 속하지 않는 mul이라는 함수도 있어요
자 이제 모듈을 공부해보죠
1번 파일 기준에서 import하며 사용합니다.
먼저 2번 파일을 import해보죠!
자 이렇게 import하면 2번 파일의 기능을 쓸 수 있습니다
근데 1번의 매개변수가 숫자가 아니네요?
그래서 결과는 더할 수 없다고 나옵니다.
이렇게 사용할 수 있어요
근데 이게 좀 귀찮죠?
파일명.기능 으로 접근을 해야하는데요
파일명이 길면 정말 난처합니다
그래서 from ~ import 절을 쓸 수 있어요
from 2번파일에서 import *(모든 것) 처럼 사용하면 그냥 sum()과 같이 사용할 수 있습니다
만약 sum 함수만 가지고 오고 싶으면 from 2번 파일 import sum 을 하면 됩니다!
이렇게 결과가 나오네요!
이제 3번 파일을 불러오죠
3번 파일은 __name__을 테스트 하는 파일입니다.
__name__은 현재 모듈의 이름을 담고 있는 내장 변수입니다.
즉 __name__이 있는 파일이 AAA.py 이면 __name__ 변수에는 __main__이라는 값이 들어가 있는것이죠
하지만 이 파일을 외부에서 실행한다면?
__name__은 다른 값이 들어갑니다.
즉 __name__이 있는 파일 AAA가 들어가게 되죠
한마디로 어디서 이 모듈을 실행했느냐에 따라 __name__에 들어가는 값이 달라집니다
그래서 외부에서 실행했을 때, 내부에서 실행했을 때를 나누어서 처리할 때 사용할 수 있죠
한번 봐볼까요
먼저 3번 파일을 직접 실행해보죠
이렇게 나옵니다.
본인이 직접 실행했으니 __name__ 변수에는 __main__ 값이 들어갑니다
그리고 외부에서 실행해볼까요
외부에서 실행해보니 이 3번 파일 이름인 Study_11_15_3이 나오고 있습니다.
__name__은 이런 값을 담을 수 있습니다
이제 4번 파일을 불러와보죠
4번 파일은 클래스가 있습니다.
클래스는 객체로 만들어야하죠?
Math라는 클래스를 참조하는 a 객체를 생성했습니다.
즉 a는 Math의 인스턴스이죠
그래서 a.sum( )으로 클래스 내부의 함수로 접근할 수 있습니다.
객체지향 및 클래스에 대한 것이 이해가 안가시면 이쪽을 공부 더 하고오세요!
또한, 클래스에 속하지 않은 mul이라는 함수는 그냥 호출 할 수 있습니다
클래스에 속하지 않고 그냥 파일에 있으니까요 ㅎㅎ
여기까지 공부 마치겠습니다
'python' 카테고리의 다른 글
파이썬(python) 장고(django) 앱 만들어보기! (0) | 2017.11.27 |
---|---|
윈도우(window10) 파이썬3 django 설치해보기 (0) | 2017.11.27 |
파이썬(python) 클래스, 객체지향 및 __init__ 공부해보기 (0) | 2017.11.22 |
파이썬 문자를 아스키로, 아스키 코드를 문자로 (10) | 2017.11.21 |
파이썬3 자연어 처리 nltk 설치해보기 (2) | 2017.11.21 |