반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

[코딩유치원 기초문법 강의]

 

2021.03.09 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 1편_프로그래밍과 코딩의 정의, 그리고 자료형

2021.03.11 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 2편_문자열 자료형

2021.03.11 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 3편_변수란 무엇일까?

2021.03.12 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 4편_리스트 자료형

2021.03.12 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 5편_튜플, 딕셔너리 자료형

2021.03.13 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 6편_집합, 불 자료형

2021.03.14 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 7편_제어문(if문)

2021.03.15 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 8편_제어문(while문)

2021.03.16 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 9편_제어문(for문)

2021.03.17 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 10편_함수, 모듈, 패키지 개념 총정리

2021.03.18 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 11편_함수 사용법

2021.03.19 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 12편_모듈 사용법

 

코딩유치원에서는 기초 문법을 하나하나 자세히 다루기보다는 개념에 대해 간략히 설명하고 넘어갈 예정입니다.

마치 영어를 시작할 때, 문법만 주구장창 공부하다가 영어에 흥미를 잃어버리는 것과 같이 코딩도 마찬가지라고 생각하기 때문입니다.

문법을 자세히 다루는 곳은 구글에서 조금만 검색해도 많이 나올뿐만 아니라, 나중에 필요할 때마다 찾아보는 것이 더 효율적입니다!


 

 

"Don't reinvent the wheel"

 

영어에는 이런 격언이 있습니다. 직역하자면 '바퀴를 다시 발명하지 마라!'입니다. 이 말은 이미 만들어져서 잘 되고 있는 것(wheel)을 처음부터 다시 만들(reinvent) 필요는 없다는 의미입니다. 즉, 불필요하게 처음부터 다시 시작하지 말라는 것을 강조하는 말입니다.

 

우리는 앞으로 코딩을 하면서 남이 만들어 놓은 수많은 모듈을 가져와서 사용하게 될 것입니다. 아니 모듈을 넘어서 코드도 많이 가져와서 사용하게 될 것입니다. 그것을 내 능력이 아니라고 부끄러워 할 필요가 없습니다. 결국 태양 아래 새로운 것은 없는 것이니까요!

 

그러니 우리가 앞으로 익혀야 할 능력은 Ctrl+C, Ctrl,V한 코드들이 무슨 말인지, 어느 부분을 고치면 내가 원하는 기능을 할 수 있는지가 될 것입니다. 지금 껏 배워온 기초 문법들이 그것을 도와줄 것이고, 오늘 배울 모듈 사용법이 여러분들의 원하는 기능들을 손쉽게 구현 가능하도록 해줄 것입니다.

 

자! 그럼 시작해보겠습니다.

 

모듈

 

한땀한땀 파워포인트로 그린 개념도

 

모듈은 기초 문법 강의 10편에서 설명드렸듯이 함수나 변수 또는 클래스를 불러와서 사용할 수 있게끔 모아 놓은 파이썬 파일(.py)입니다.

 

대충 개념은 알아보았으니 이번 시간에는 모듈 파일을 만드는 방법과 모듈을 불러와서 사용하는 법에 대해 자세히 알아보겠습니다.

 

모듈 만드는 방법

1) VS Code를 실행한 후, 원하는 경로(디렉토리라고도 부름)에 폴더를 하나 만듭니다.

   (어떻게 하는지 잘 모르겠다 하시는 분들은 아래의 글을 참고해주세요)

2021.03.08 - [파이썬 기초/개발환경 구축] - [코딩유치원] 파이썬 개발환경 구축 4편 (VS Code와 친해지기)

 

2) 적당한 제목(module.py)으로 파이썬 파일을 하나 만들어 줍니다.

 

3) 아래와 같이 코딩을 한 후, 저장을 합니다. (저장을 꼭 해주세요!)

def add(a, b):
    return a + b

a= 1
b= 2

print(a+b)

 

모듈 만들기 끝입니다! 엄청 간단하죠?ㅎㅎ

 

사실 더 간단하게 가장 아래의 함수 두 줄만 있어도 되지만 아래에서 설명드릴게 있어서 이렇게 코딩했답니다.

 

그럼 바로 모듈을 가져와서 사용하는 법으로 넘어가보겠습니다.

 

 

모듈 사용하는 방법

 

1) 다시 한 번 새로운 파이썬 파일을 하나 만들어 줍니다. (이번에도 아무 이름.py로 이름지어줍니다)

 

2) 아래와 같이 코딩한 후, 코드를 실행합니다.

import module as mod      # import 모듈명
                          # as mod는 불러온 모듈의 이름이 길 때, 앞으로 mod로 부르겠다는 의미
                          # 당연히 mod도 맘대로 지은 이름

print(mod.add(5,10))

 

잠시 코드에 대해서 설명하고 실행 결과에 대해서 이야기 해보겠습니다.

 

import이미 만들어 놓은 파이썬 모듈을 사용할 수 있게 해주는 명령어입니다. 그 뒤에 module은 우리가 방금 만들었던 모듈명이죠.

그리고 as mod는 필수는 아니지만 앞으로 긴 이름의 모듈이 있을 때, as 명령어로 모듈 이름을 내맘대로 재정의해서 사용할 수 있게 해주는 코드니 알아두시면 좋겠습니다.

 

마지막으로 print() 함수를 이용해서 module의 add(a,b) 함수에 5와 10을 인수로 넣어서 결과를 터미널 창에 띄우는 코드입니다.

 

여기서 잘보시면 모듈명.함수의 형태로 사용한게 보이시죠? 앞으로 이렇게 "."(도트 연산자)를 이용해서 원하는 모듈의 원하는 함수를 가져다 사용할 수 있습니다.

 

여기까지가 모듈을 사용하는 방법입니다. 이것도 정말 간단하죠?!

 

 

모듈 만들 때 꼭 넣어줄 제어문 [  if__name__ == "__main__":  ]

 

위에서 작성했던 코드를 실행해 보시면 아래와 같이 결과가 나왔을텐데요, 잠시 하나를 더 설명해야 할 것 같아요.

 

<결과 터미널 창>

3
15

 

 

우리가 module의 add 함수를 불러오면서 원했던 것은 단지 15라는 값이 었습니다. 하지만 위에 3이란 값이 함께 출력되었죠.

이 3이란 것은 import module을 하면서 딸려온 출력된 값입니다. 이것이 의미 하는 바는 무엇일까요?

 

바로 import를 하면 함수 외에도 모듈의 모든 것들, 특히 변수도 같이 import 된다는 것입니다. 모듈을 작성하면서, 불가피하게 함수 외에도 변수를 설정할 수도 있을 것입니다. 만약 이런 것들이 그대로 새로 작성하는 코드에 영향을 준다면 곤란한 일이 생길 수도 있습니다.

 

그래서 통상적으로 모듈을 만들 때는 아래와 같은 문구를 넣어줍니다.

 

def add(a, b):
    return a + b

if __name__ == "__main__":    # 참고로 __는 언더바( _ ) 두 개
    
    a= 1
    b= 2

    print(a+b)

 

<참고> 만약 내가 코린이고 앞으로 모듈 만들 일 없다고 생각하시면 아래의 내용은 그냥 넘어가셔도 됩니다.

 

__name__이란 변수명은 모듈과 현재 파이썬 파일을 구분해주기 위한 파이썬만의 특별한 변수입니다. 현재의 파이썬 파일을 실행하면 __name__변수에 "__main__"이라는 값이 저장됩니다. 이것을 이용해 모듈을 불러왔을 때, 실행되면 안되는 부분을 실행되지 않게 해줄 수 있습니다.

 

1) 모듈 파일을 직접 실행할 때

 

module.py를 직접 실행하면은 if의 조건문이 참이 되어서 if문 안의 내용이 실행됩니다.

 

2) 모듈 파일을 불러올 때

 

모듈을 import한다는 것은 모듈 파일을 실행시킨다는 것입니다. 하지만 이때 모듈 파일의 __name__ 변수에는 "__main__"이 들어가있지 않으므로 if 조건문이 거짓이 되어 if문 다음 문장이 수행되지 않습니다.

 

 

모듈은 아무곳에서나 불러올 수 없다 

 

기본적으로 import 명령어로 모듈을 불러오려면, 모듈 파일이 현재 디렉터리(경로)에 있거나 파이썬 라이브러리가 저장된 디렉터리에 있어야만 합니다. 참고로 파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말합니다.

 

예전에 VS Cdoe에서 인터프리터 환경을 'base':conda로 설정해주었었는데 이 것이 위에서 언급한 파이선 라이브러리가 저장된 디렉터리가 되겠습니다. 앞으로 새로운 패키지를 설치하는 일이 자주 있을텐데요, conda 명령어를 이용해서 패키지(모듈의 모음)를 설치하면 기본적으로 base에 설치됩니다. 이에 대한 내용은 그때 다시 자세하게 다루도록 하겠습니다.

 

어떤 메커니즘으로 파이썬이 모듈을 찾아서 사용하는지에 대해서는 아래의 블로그에 잘 설명되어 있으니, 여기서는 자세히 설명하지 않겠습니다. 내용이 조금 어려울 수 있으니, 중급자분들만 보세요.

 

velog.io/@devmin/%ED%8C%8C%EC%9D%B4%EC%8D%AC-import%EA%B0%80-module%EA%B3%BC-package-%EB%A5%BC-%EC%B0%BE%EC%95%84%EA%B0%80%EB%8A%94-%EA%B2%BD%EB%A1%9C

 

파이썬 - import가 module과 package 를 찾아가는 경로

파이썬에서는 import를 활용해 현재 작성하고 있는 파일 바깥의 패키지 및 모듈을 불러와 그 안에 있는 요소들을 가져다 쓸 수 있는데요, 이때 파이썬이 어떻게 패키지와 모듈이 있는 곳을 찾아나

velog.io


오늘 준비한 내용은 여기까지입니다.

 

여러분들의 코딩 공부에 도움이 되었길 바랍니다.

 

긴글 읽어주셔서 감사합니다!

반응형

+ Recent posts