Python3 (6)Module, Package, import문법
옮
서로 연관된 코드를 모아서 이름을 붙인
파일을 모듈이라고 합니다.
서로 연관된 모듈을 모아서 이름을 붙인
디렉토리를 패키지라고 합니다. 모두 파이썬에서 코드를 정리 정돈하는 핵심이 되는 도구입니다. 모듈과 패키지를 이용해서 가독성을 높이고, 유지보수의 편의성을 향상시키고, 코드의 양을 줄이면서, 필요한 코드를 쉽게 찾을 수 대청소를 해봅시다.
-------------------------
서로 연관된 데이터를 그루핑하고 이름을 붙인 것은 list 또는 dictionary라고 불림
서로 연관된 코드를 그루핑하고 이름을 붙인 것은 함수
이렇게 코딩이란, 정리정돈이 반이다
여기서 코드가 더 많아지면??
서로 연관된 코드를 그루핑해서 파일에 저장한 후에 파일에 이름을 붙이면 되겠네?
▽함수(코드)와 데이터를 같이 저장해야 될 때가 있겠어 어떤 경우에는 그렇게 해야 어떤 상태를 저장할 수 있겠네 밑에 있어 Obejct
이것을 모듈이라고 한다.
그런데 코드가 더 많아지면 모듈도 많아짐
그럼 어떻게?
폴더를 만들고, 서로 연관된 모듈을 담는다
이렇게 만들어진 폴더를 패키지라고 함
데이터 정리정돈 List, Dict
코드를 정리정돈 Function
데이터와 함수를 정리정돈 객체, Object : 배우셨는지는 모르겠지만~
이런 코드들을 파일로 정리정돈한 것이 Module --그럼 모듈엔 객체가 여러개일 수가 있겠네
Module을 디렉토리로 정돈한 것이 Package
▽import안해도 되는 함수 / import해야 하는 함수 / pip로 다운 받고 import해야 하는 함수 세개인데 구분좀
아래 다 보고 나니까
import가 모듈(파일) 가져오는 것이다. 모듈 안엔 함수가 여러개 있을 수 있다 동물원 모듈이면 그 안에 함수 sum...
사실 젤 처음것이 제일 특이해 보이네 가져오지도 않았는데 쓸 수 있고 말이야 printf()랑 write() 같은 느낌인가?
---
▽이전 강의 보면
내장된건 보통 모듈이고
다운받는건 패키지네?
->pandas는 패키지인데 install도 하고 import하잖아
---
https://offbyone.tistory.com/106
여기 보니까
import food 하게 되면 food 패키지 내의 모든 모듈들이 임포트되지만 하위 패키지의 모듈은 임포트 되지 않습니다. 사용할때는 직접 임포트 해야 합니다.
라고 써있어
-------------------------
1.모듈
서로 연관된 코드를 파일에 담으면 그 파일을 파이썬에서는 모듈이라고 함
이때 우리는 entry.py라는 모듈을 갖고 있고 실행시키면 2가 출력되는것
: 저게 그냥 모듈이고, 실행시킬 수 있군
모듈도 코드가 많아짐에 따라 모듈을 분리할 필요성들이 생김.
이렇게 있을 때, 코드가 엄청 많아졌을 때 생길 수 있는 문제들
누군가가 sum이라는 이름의 함수를 또 정의
summary의 뜻으로 sum이라고 했다.
위의 sum을 기대했는데 아래 sum이 실행됐어 --아래거가 실행되는군 다시 정의를 하니까?
이 충돌을 어떻게 피할까? 접두사를 붙여?
arithmetic : 산수
이것도 좋은 방법이지만, --이런 해결법이 있다고 한개 알려준 느낌
코드가 더 많아지면??
하나의 파일에 너무 많은 코드를 담아야함. 그건 또 문제가 될 수 있다.
그리고 또 우리가 필요한 정보를 찾기도 어렵고
어떤 사람들은 앞에다 접두사 붙이는걸 싫어할 수도 있어
이때 우리를 구원해주는 도구가 모듈.
파일로 쪼개보자
파일로 코드를 이사시킴.
방금 붙였던 접두사가 이미 파일의 이름에 포함돼서 sum만 남겼다
저렇게 파일로 쪼갠 모듈은 import로 가져올 수 있다.
이 entry.py모듈안에서 다른 모듈을 쓰겠다 : import 어떤모듈이름, .py는 생략
그걸 쓸 땐 모듈.함수() 이렇게 씀
import는 맨 위에 선언하는 것이 관습이지만 꼭 그래야하는 건 아님.
import문법의 변주(모듈이름 안쓰기, 함수 이름도 바꾸기)
- sum이라는 이름을 가져오는 것
from statistics_module import sum
저렇게 쓰면 이 코드 안에서 sum은 저게 됨.
▽모듈 이름 안쓰고 sum이라고 쓰고 싶을 때겠네
sum이라는 이름을 바꾸고 싶다면?
as를 쓰면 됨.
▽그 함수 이름도 바꾸고 싶을 때
이렇게 모듈을 이용하면 우리의 SW를 더 구조적으로 만들 수 있다.
-------------------------
2.패키지
모듈이 많아지면 또 정리정돈을 하고 싶다.
> 디렉토리를 만들고, 그 디렉토리 안에 연관된 모듈을 넣고
> 디렉토리에 이름을 붙이면 되겠네
이것이 패키지
저 위에 모듈을 import할 때 저렇게만 썼던건 모듈이 entry.py 와 같은 디렉토리에 있을 때의 예제였다.
: 이 뜻을 생코님이 # ./arithmetic_module.py 라고 주석을 달아놓음.
number_packge 디렉토리를 만들고, 이 모듈들을 이동 : 패키지 안에 모듈들이 위치하게 됨
이걸 이게 쓰려면? import를 쓴다면
이렇게 해야함, 경로를 . 으로 다 적어주는 것
이때는 from이 거의 필수겠다. from을 쓰면 쓸 때 경로는 안적어줘도 되니까
▽어쨌든 모듈을 import하는거구나