나 개발자 진짜 되냐?

5일차 파이썬 프로그래밍의 날개_모듈편 본문

파이썬을 시작했어요!

5일차 파이썬 프로그래밍의 날개_모듈편

Snow Rabbit 2022. 12. 17. 18:56

어제 늦장 부려서 5일째가 넘어갔는데..

6일째로 써야할지..

클래스랑 이어지는 글이니 5일째로 써야 할지.. 난감한 상황..

 

겹치는 게 많아서 5일로 써본다!

 

모듈

함수나 클래스, 변수 같은 것들을 모아둔 것을 말한다.

다른 파이썬 프로그램에서도 쓸 수 있다는 특징이 있어서

파이썬 파일이라고 할 수 있다. 

 

모듈을 만드는 방법?!

알아야지

 

def add ( a, b ) :

    return a + b

def sub ( a , b ) :

    return a - b

 

이런 함수만 담긴 파일을 저장한다.

나는 앞자를 따서 as.py라고 저장했다.

이 파일. py로 저장한 이것을 모듈이라고 한다.

 

이 모듈을 사용하려면

import라고 앞에 적어줘야 한다. 

 

import as

print( as.add( 2, 8 ))

      →      10

 

이렇게 말이다.

. py라고 쓰지 않도록 주의하자

 

모듈 이름을 쓰지 않고 함수를 바로 쓰는 방법도 있다.

 

from as import add

add( 2 ,8 )      →      10

 

이렇게 from에 모듈명을 적어주고

import 뒤에 모듈 안에 있는 함수 이름을 적어주면

as. add라고 적어줄 필요가 없는 것이다.

 

둘 다 쓰고 싶다면

 

from as import add, sub

 

모듈 안에 있는 모든 함수를 다 쓰고 싶다면

 

from as import *

여기서 * 은 '전부 다'를 의미한다.

 

이런 모듈은 명령 프롬프트 (cmd창)에서도 

사용할 수 있는데 거기서 사용되는 중요한 코드가 있어서 준비했다. 

 

우리가 위에 적어 놨던 as.py를 가져와서 두문장 추가해본다.

 

 

def add ( a, b ) :

    return a + b

def sub ( a , b ) :

    return a - b

 

print( add( 2, 8 ))

print( sub( 8, 2 ))

 

이렇게 적고 cmd창에서 적어보면

print값이 잘 나온다.

 

하지만 우리가 함수만 사용해야 하는데

모듈을 실행시키면 print가 같이 나올 것이다.

 

그럴 때 print를 가리는 방법이 있다고 한다. 

 

if __name__ == "__main__":

    print( add( 2, 8 ))

    print( sub( 8, 2 ))

    

 

이렇게 if __name__ == "__main__": 을 사용해주면

cmd창에서 파일을 직접 실행했을 땐 

__name__ == "__main__" 이 값이 참이 되어

다음 문장이 수행되며

 

다른 파일에서 모듈을 부르는 import를 사용할 때는 

__name__ == "__main__"식이 거짓이 되어

if문이 수행되지 않는다고 한다.

 

__name__?

파이썬 내부에서 사용하는 특별한 변수 이름

 

만약에 cmd창에 직접 치면 __ name __변수에는

__main__값이 저장된다고 한다.

 

하지만 import 값에다가 치면

__name__변수에는 모듈 이름값 as가 저장된다고 한다. 

 

그래서 위처럼

if문을 통해서 import 하기 싫은 부분을 감출 수 있다. 

 

 

모듈에 또 다른 친구도 넣을 수 있을까?

YES!

# cir.py

PIE = 3.1415                       # 변수

 

class Math():                      # 클래스

    def circle ( self, r )

        return PIE * (r ** 2)

 

def add (a, b):                     # 함수

return a + b

 

 

되는지 보자

import cir

 

# 변수 

print(cir.PIE)      →      3.1415

 

# 클래스

a = cir.Math()

print(a.circle(3))      →      28.2735

 

# 함수

print(cir.add(cir.PIE, 5)       →      8.1415

          이 함수, 클래스, 변수들이 어디서 왔는지 명확하게 적어줄 필요가 있다. cir.처럼!

 

모듈이 또 다른 모듈 데려오기

모듈이 모듈을 데리고 다닐 수 있다.

 

새로운 모듈을 만들어보자

 

#newmo. py

 

import cir

result = cir.add( 2 , 8 )

print(result)

 

이렇게 모듈 안에 import 해서 모듈을 쓸 수 있다.

대신 이 두 개의 모듈은 같은 디렉터리에 있어야 한다. 

 

사실 이 뒤에도

모듈을 가져오는 방법이 있지만..

진짜 얼마나 쓸려나 싶어서 그냥 안 썼다 히킼..

괜찮겠지......

 

끗!