ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모듈화
    Python 2018. 11. 18. 02:32

    모듈화

    이번에는 모듈화에 대해서 사용방법을 알아볼 것이다.

    프로그램을 작성하다보면 특정 기능을 반복해서 사용해야하는 경우가 발생할 때가 있다.


    예를 들면 A와 B를 더하고 그 합산을 출력해주는 기능이 있다고 할 때 이 기능을 매번 코드로 작성하기는 귀찮을 수가 있다.

    이럴때 해당 기능을 따로 모듈로 만들어서 필요한 소스 파일에다가 모듈을 import하고 해당 모듈의 합산 기능을 호출해서 사용하면 간편하다.




     모듈 만들기

    우선 mymath.py라는 이름의 파일을 하나 생성하고 아래의 코드를 작성해보자.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!python
    def average(a,b,c):
        s = a + b + c
        r = s / 3
        return r
     
    def plus(a,b):
        return a + b
     
    pi = 3.14
    cs


    위에서는 3개의 수를 입력받아 합산하여 그 평균을 구하는 기능 def average(a, b, c)와

    2개의 수를 입력받아 더해주는 def plus(a, b),

    그리고 pi라는 변수에 3.14라는 값을 저장하고 있다.


    우리는 위의 3가지 기능을 모듈로써 만들고 원하는 소스에서 필요에 의해 호출하여 활용할 것이다.



     모듈 호출하기

    모듈을 생성했으니 이젠 모듈을 호출하여 활용할 일만 남았다.

    mymoudule.py라는 파일을 하나 생성하고 아래의 코드를 작성하자.

    1
    2
    3
    4
    5
    6
    7
    #!python
    import mymath
     
    #code
    print(mymath.average(1,2,3))
    print(mymath.plus(1,2))
    print(mymath.pi)
    cs


    import라는 명령어를 통해 mymath라는 내가 생성한 커스텀 모듈 파일을 불러올 수 있다.

    import 명령어를 통해 모듈을 불러온다면 그 소스에서는 어디서든 내가 만든 기능들을 호출하여 사용할 수가 있다.


    기능(함수)를 호출하는 방법은 다음과 같다.

    모듈명.함수명(인자)


    혹은


    모듈명.변수명


    위 형식대로 작성한다면 모듈에 내장된 함수들을 호출할 수가 있다.


    함수를 호출했을때 정말 정상적으로 처리가 되는지 결과를 확인해보자.


    가장 먼저 mymath모듈의 average()함수를 통해 1, 2, 3을 모듈 함수에 전달했고 그 모듈 함수에서 인자를 받아 합산한 다음 나누기 3을 하여 2.0이라는 결과가 출력되었다.


    그 다음 mymath모듈의 plus()함수를 통해 1과 2를 모듈 함수에 전달했고 그 모듈 함수에서 인자를 받아 1과 2를 합산하여 3을 되돌려주었다.


    그 다음 mymath 모듈의 pi라는 변수를 호출하였더니 그 변수에 저장되어있는 3.14가 출력되었다.


    이렇듯 모듈로 인해 똑같은 비즈니스 로직을 반복하여 작성할 필요 없이 해당 기능을 수행하는 함수를 호출하여 손쉽게 사용할 수가 있게 되었다.




     모듈의 특정 함수만 호출하기

    모듈 자체를 호출하는 방법이 있다면 이번에는 모듈이 내포하고 있는 특정 함수만을 호출하여 사용할 수도 있다.

    1
    2
    3
    4
    5
    #!python
    from mymath import average
     
    #code
    print(average(1,2,3)) #import한 average()함수 호출하기
    cs


    위의 코드를 해석하면 다음과 같다.

    "from이라는 명령어를 통해 mymath라는 모듈로부터 average()함수를 import하겠다."


    이러한 방식으로도 모듈이 가지고 있는 함수를 호출하여 사용할 수가 있다.

    대신 그 외의 함수들은 호출할 수가 없다는 특징이 있다.


    아래를 보자.



    우리가 주목해야할 부분은 6번 줄과 7번 줄이다.


    6번 줄 -

    mymath라는 모듈로부터 plus()라는 함수를 호출시도했으나 에러가 발생하여 호출할 수가 없었다.

    그 이유는 다음과 같다.



    바로 mymath라는 모듈이 정의되지 않았다라는 것이다.

    정의되지 않았다는 것은 모듈이 import되지 않았다는 의미이다.

    이 소스에 import된 것은 average()함수mymath모듈이 import 된 것이 아니라는 것이다.

    이것은 mymath의 average()함수만을 제공해주겠다는 의미이며 그 외의 기능은 사용할 수 없다라는 뜻이다.



    7번 줄 -

    mymath모듈에 존재하는 pi라는 변수명을 호출을 시도했으나 역시 에러가 발생하여 호출할 수가 없었다.



    이 역시 마찬가지의 오류다. pi라는 변수가 정의되지 않았다라는 것이다.

    mymath를 이 소스에 import하지 않았으므로 mymath안에 존재하는 pi 변수 또한 호출하여 사용할 수가 없는 것이다.

    단! 만약 이 소스에서 pi라는 변수를 생성하고 값을 초기화했다면 위와 같은 오류는 발생하지 않을 것이다.

    대신 mymath에 정의된 3.14라는 값을 호출하는 것이 아니라 이 소스 안에서 정의한 값을 사용하게 되는 것이다.




    만약 프로그래밍 언어를 이제 막 배우고 있는 사람이라면 이러한 내용이 당장 이해가 안될 수도 있다.

    이와 같은 내용은 단순히 "읽음"으로써 바로 습득되기보단 "경험을 해봄"으로써 습득하게 될 것이다.


    그러니 만약 이해가 가지 않는다해도 당장 조급해하지 말구 더 많은 코딩시간을 가지고 다양한 경험을 해보자. :)


    'Python' 카테고리의 다른 글

    함수 생성하기  (0) 2018.11.17
    파일 삭제하기  (0) 2018.11.17
    파일 수정하기  (0) 2018.11.16
    파일 목록 출력하기  (0) 2018.11.16
    파일 생성하기  (0) 2018.11.16
Designed by Tistory.