I'm Electronic Engineer :)

[Do it] 점프 투 파이썬 - 06일차 본문

Study code & programming/Python

[Do it] 점프 투 파이썬 - 06일차

Lu175 2019. 8. 7. 00:43

 

 

 

06일차.pdf
0.47MB

 

 

 

1. 기본 내용

 

 

공부 날짜: 201986()

 

 

 

2. 스터디 내용

 

 

공부 범위:

 

1장 파이썬이란 무엇인가?

2장 파이썬 프로그래밍의 기초, 자료형

3장 프로그램의 구조를 쌓는다! 제어문

4장 프로그램의 입력과 출력은 어떻게 해야 할까?

5장 파이썬 날개 달기

6장 파이썬 프로그래밍, 어떻게 시작해야 할까?

7장 정규 표현식

 

 

공부 내용:

 

5-2     모듈

 

--- 모듈

 

           모듈은 함수, 변수, 클래스들을 모아둔 파일이고,

           다른 파이썬 프로그램에서 불러와 사용할 수 있는 파이썬 파일( .py )이다.

 

--- 모듈 불러오기

 

           import는 현재 디렉터리에 있는 파일이나

           파이썬 라이브러리가 저장된 디렉터리의 모듈만 불러올 수 있다.

 

           위의 경우에 [ from mod1 import add ]로도 모듈의 함수를 사용할 수 있다.

 

           하나의 모듈에서 2개 이상의 함수를 사용하려면 두 모듈 함수를 적거나

           모든 것을 뜻하는 ( * )을 사용하면 된다.

 

---  [ if __name__ == “__main__” : ]의 의미

 

           mod1모듈을 import했을 뿐인데 값이 출력 된다.

 

           [ if __name__ == “__main__” : ]은 직접 mod1.py파일을 실행했을 때 True이다.

 

           인터프리터나 다른 파일에서 모듈을 불러서 사용할 때는 False가 된다.

           (mod1import하면 mod1.py__name__변수는 모듈의 이름(mod1)을 값으로 갖는다.)

 

--- 클래스나 변수 등을 포함한 모듈

 

--- 나 혼자 코딩! (p213)

 

--- 다른 파일에서 모듈 불러오기

 

           다른 파일에서도 import로 모듈을 불러올 수 있다.

 

--- 모듈을 불러오는 또다른 방법 (2가지)

 

           1. sys.path.append( 모듈을 저장한 디렉터리 ) 사용하기

 

           디렉터리를 생성하고 그 디렉터리에 모듈 파일을 옮긴다.

 

           sys.path 명령어는 파이썬 라이브러리가 설치되어 있는 디렉터리를 보여준다.

 

           sys.path.append()를 이용하면 sys.pathmod2.py를 저장한 디렉터리를 추가할 수 있고,

           어디에서나 import mod2를 사용하여 모듈을 불러올 수 있다.

 

           모듈을 잘 불러와서 사용할 수 있다.

 


           2. PYTHONPATH 환경 변수 사용하기

 

           set명령어로 PYTHONPATH 환경 변수에 mod2 모듈이 있는 C:\Doit\mymods 디렉터리를 설정한다.

 

           성공적으로 mod2모듈을 불러와서 사용할 수 있다.

 

 

           환경변수를 설정하는 방법으로 여러 디렉터리의 모듈을 불러올 수 없을지 실험해보았다.

           변수라는 이름과 같이 마지막에 대입된 디렉터리에 있는 모듈만 불러올 수 있었다.

 

           혹시나 해서 디렉터리 2개를 리스트 형태로 환경 변수에 대입해봤는데

           이 경우는 두 경로 모두 적용이 안되었다.

           (sys.path에 추가하는게 좋을 것 같다.)

 

 

5-2     모듈

 

--- 패키지 (Packages)

 

           도트( . )를 사용하여 파이썬 모듈을 디렉터리 구조로 관리할 수 있게 해준다.

           

           모듈 이름이 A.B이면 A패키지의 B모듈을 의미한다.

 

           최상위 디렉터리를 루트 디렉터리라하고 하위 디렉터리는 서브 디렉터리라고 한다.

 

           패키지 구조로 파이썬 프로그램을 만드는 것이 공동 작업과 유지 보수에 유리하다.

 

--- 패키지 만들기

 

           패키지 기본 구성요소를 준비한 뒤 패키지 안의 함수를 실행한다.

 

           패키지 안의 함수 실행 방법 1 ( import )

 

           패키지 안의 함수 실행 방법 2 ( from 디렉터리 import 모듈 )

 

           패키지 안의 함수 실행 방법 3 ( from 모듈 경로 import 모듈 함수 )

 

--- import game을 수행하면 참조 가능한 것

 

           game 디렉터리의 모듈

           game 디렉터리의 __inti__.py에 정의한 것

 

--- import 디렉터리

 

           도트 연산자( . )로 디렉터리를 import할 때 가장 마지막 항목은 모듈이나 패키지 여야 함.

 

--- __init__.py의 용도

 

           __init__.py파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할이다.

 

           (Python 3.3 버전 이후로는 __init__.py파일이 없어도 패키지로 인식하지만

           하위 버전 호환을 고려하여 __init__.py를 만드는 게 안전하다.)

 

           game.sound 패키지의 모든 것( * )import했는데도

           echo모듈의 함수 하나 사용하지 못하고 NameError가 떠버린다.

 

 

           위의 상황을 해결하는 2가지 방법이 있다.

 

           1. __init__.py__all__ 변수를 설정하고 import할 수 있는 모듈을 정의해준다.

 

           2. [ from 디렉터리 import * ]에서 디렉터리의 마지막 항목을 모듈로 한다.

 

--- 나 혼자 코딩! (p220)

 

--- relative 패키지

 

           game.graphic.render.pygame.sound.echo.py를 사용하고 싶다면

           render.py[ from game.sound.echo import echo_test ]를 추가하면 된다.

 

           위의 render.py코드를 아래와 같이 작성할 수 있다.

 

           ( .. )은 부모 디렉터리, ( . )은 현재 디렉터리를 의미한다.

 

           위와 같은 ( .. )를 사용한 import는 모듈 안에서만 사용해야한다.

 

           인터프리터에서 사용한다면 SysteError가 발생한다.

 

 

 

3. 스터디 후기

 

 

스터디 도중 발생한 문제, 어려웠던 점을 어떻게 해결했는지?

2개 이상의 디렉터리에서 모듈을 불러올 때

환경 변수로는 안되었고, sys.path.append()로 추가하는 방법이 있다.

 

 

간단한 소감

모듈과 패키지에 대해 공부했다.

복잡한 프로그램을 만들 때 잘 활용해봐야겠다.

 

 

다음 스터디 예정일

201987()