Python & Ruby

모듈

모듈이란?

내장모듈

Python 

import math
print(math.ceil(2.9))
print(math.floor(2.9))
print(math.sqrt(16))
3
2
4.0

ideone.com

Ruby

puts(Math.sqrt(16))
4.0

ideone.com

모듈에 없을 때

Python

def egoing_a():
    return 'a'
#엄청 많은 코드
def k8805_a():
    return 'B'
#엄청 많은 코드
print(egoing_a())

Ruby

def egoing_a()
  return 'a'
end
#엄청 많은 코드
def k8805_a()
  return 'B'
end
#엄청 많은 코드
puts(egoing_a())

실행결과

a

Python | Ruby 

모듈의 도입 - 파이썬

Python

egoing.py

def a():
    return 'a'
def b():
    return 'b'
def c():
    return 'c'

k8805.py

def a():
    return 'B'

 3.py

from egoing import a as z
import k8805 as k
print(z())
print(k.a())
a
B

모듈의 도입 - 루비

Ruby 

egoing.rb

module Egoing
  module_function()
  def a()
    return 'a'
  end
end

k8805.rb

module K8805
  module_function()
  def a()
    return 'B'
  end
end

3.rb

require_relative 'Egoing'
require_relative 'K8805'
puts(Egoing.a())
puts(K8805.a())
a
B

모듈을 통한 중복의 제거 & 재활용성의 증대

Python

egoing.py

def a():
    return 'a'
def b():
    return 'b'
def c():
    return 'c'

4_1.py

import egoing
print(egoing.a())
a

4_2.py

import egoing
print(egoing.a())
a

로그인 에플리케이션

Python 

auth.py

def login(_id):
    members = ['egoing', 'k8805', 'leezche']
    for member in members:
        if member == _id:
            return True
    return False

5.py

import auth
input_id = input("아이디를 입력해주세요.\n")
if auth.login(input_id):
    print('Hello, '+input_id)
else:
    print('Who are you?')

Ruby

auth.rb

module Auth
  module_function()
  def login(_id)
    members = ['egoing', 'k8805', 'leezche']
    for member in members do
        if member == _id
            return true
        end
    end
    return false
  end
end

5.rb

require_relative 'Auth'
puts("아이디를 입력해주세요")
input_id = gets.chomp()
if Auth.login(input_id)
  puts('Hello, '+input_id)
else
  puts('Who are you?')
end

댓글

댓글 본문
  1. Byunghawk Lee
    Python에서는 Return을 만나면 Function이 끝나버리나요?

    현재 코드는 그렇게 되어있네요.
    우문인가요?
    나이가 많다 보니 머리가 잘 안돌아 가네요. ...ㅎㅎ
  2. Victorim
    완료했습니다!
  3. 냥더쿠
    import math as m
    from math import floor as f
    print(m.ceil(2.9))
    print(f(2.9))
    이렇게 하니까 이해가 잘되는군요
  4. 오션호스
    210723 항상 감사합니다 선생님 아프지마세요ㅠ
  5. 나영쓰
    210715
  6. 미뇨르
    210627 완료!!
  7. 태연코딩
    수업제작하는 데에 정말 고생이 많으셨군요 몸도 안좋으셨고 ㅜㅜ 늘 감사합니다
  8. 정효빈
    완료했습니다!
  9. 드림보이
    잘 들었습니다...
  10. 용만
    2021년 3월 5일 완료했습니다.
  11. Twayne
    2021.02.24
  12. 후니
    완료
  13. Hyunwoo Kim
    210204 감사히 잘 보았습니다.
  14. loveahav
    2021.1.30
  15. 이에이
    1월 9일
  16. 오늘부터 시작
    2021.1.1
  17. 이현수
    20.12.18
  18. 윤유상
    함수를 재활용해서 중복을 제거하고, 기능에 따라 분류해서 생산성을 높이는 모듈, 잘 배웠습니다 ㅎㅎ 감사합니다!
  19. 홍주호
    20.12.5
  20. 이영석
    11월 21일 완료했습니다!
  21. cgoing
    cgoing / 2020.09.24
  22. 허우룩
    2020.09.23
  23. 쿠키앤크림
    pupu님 따라잡기
    2020/07/02 완료
  24. 허클베리핀
    20.06.02_완료
  25. 허클베리핀
    <북마크> 모듈의 도입(파이썬)
  26. 코딩하자파이팅
    2020. 06. 01 책갈피 "Python & Ruby - 모듈 4 - 1 : 모듈의도입 파이썬"
  27. 김광현
    5/29완료
  28. Jaehyun Lee
    질문드립니다. 루비에서 모듈 사용 시, require 뒤에 나오는 부분은 module 이름이 아닌 파일 이름 인가요?
    ubuntu 환경에서 require_relative 를 이용하여 위 코드와 동일하게 작성 시 파일 읽어오지 못하지만, 소문자로 변경하여 작성 시 정상적으로 동작해서 문의드립니다.

    requre_relative 'Egoing' -> require_relative 'egoing'

    파일 이름 변경하고 다시 해보니 파일 이름을 적어주어야 하는게 맞는것 같습니다.
  29. 맥반장
    2020-03-29 완료!
  30. 악어
    2020.02.27 완료 감사합니다!!
  31. riversik
    2020.02.16
    완료
  32. hong
    휴,, 좀 힘들었어요 ^^
  33. 내일은 코딩왕
    완료 감사합니다
  34. 도전차차차
    20191025
  35. 정 준상
    2019/10/13 완료
  36. 가재준
    완료
  37. FIRE
    20190819 완료
  38. 허니비
    190807
  39. Ray Kim
    생활코딩에서 WEB1 HTML 수업을 들었었는데 그 때 이고잉님이 하신 말씀중 어려운것들은 어떤 특이 상황에 더 쉽고 편리하지만 응용하기 어렵고 쉬운것들을 기반으로 해서 만들어진다는게 떠오르네요! 지금 저희가 배우고 있는 어려워 지고있는 내용들도 쉬운것들로 이루어져 있다고 생각하니 더욱 열심히 하게 되네요!
  40. Ray Kim
    조금 쉬어가면서 수업올리셔도 됩니다~ 너무 무리하지마세요!
  41. 김민수
    함수를 사용할때 중복되는것을 방지하는 방법은
    1. 함수의 이름 작성자의 이름을 포함시킨다 ex) KMS_sort(a)

    2. 모듈을 활용함으로써 같은이름의 함수가 공존할수 있도록 설정하는것이다
    ex) KMS.a() (KMS 모듈의 a 함수)
    REV.a() (REV 모듈의 a 함수)

    모듈을 사용하는 이유는 중복의 방지도 존재하지만 유지보수 즉 유연한 프로그래밍에 도움이 된다는것이다.
    예를 들어
    def KMS_a():
    return "a"

    라는 함수가 존재하며
    REC.py 라는 파일과 REV.py라는 파일에 각각
    def KMS_a():
    return "a"
    라는 함수를 사용하고 코드를 고칠때 일일이 손봐야 하는 반면

    KMS 라는 파일에 위의 함수를 정의한 다음
    import KMS 즉 해당 함수가 존재하는 파일을 호출하게 되면
    각 파일에 있는 return 값을 모두 고치지 않고 KMS 파일의 정의된 함수만 손보면 된다는 것이다.
  42. 김민수
    import 는 할당이다
    egoing은 egoing.py 이라는 파일명의 이름이며 import egoing은 egoing 이라는 파일을 호출하는것이다

    from egoing import a 라는것은 egoing 파일안의 함수 a만을 호출한다는 뜻이다

    from egoing import a as KMS 라는것은 egoing 파일안의 함수 a를 호출하는데 이 함수의 이름을 KMS로 바꿔서 사용하겠다는 뜻이다.

    ※주의 from egoing import a 로 호출했을때
    print(a()) 즉 파일의 이름인 egoing을 쓸 필요가 없다
    반면, import egoing 을 호출할시
    print(egoing.a()) 로 호출하여야 한다
  43. 얼그레이
    감사합니다!! 하루 하루 너무 재미있게 배우고 있습니다 :)
    190603
  44. Sunday
    감사합니다
  45. hs4351
    190517 완료 감사합니다
  46. 정돌
    완전이해 감사!!!
  47. Hotak Choi
    190419!
  48. wiseman
    1904191117
  49. 김또쥬
    좋은강의 감사합니다
  50. huyk
    190404 완료 감사합니다
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기