생활코딩

Coding Everybody

코스 전체목록

닫기

모듈

모듈이란?

내장모듈

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. 쿠키앤크림
    pupu님 따라잡기
    2020/07/02 완료
  2. 허클베리핀
    20.06.02_완료
  3. 허클베리핀
    <북마크> 모듈의 도입(파이썬)
  4. 코딩하자파이팅
    2020. 06. 01 책갈피 "Python & Ruby - 모듈 4 - 1 : 모듈의도입 파이썬"
  5. 김광현
    5/29완료
  6. Jaehyun Lee
    질문드립니다. 루비에서 모듈 사용 시, require 뒤에 나오는 부분은 module 이름이 아닌 파일 이름 인가요?
    ubuntu 환경에서 require_relative 를 이용하여 위 코드와 동일하게 작성 시 파일 읽어오지 못하지만, 소문자로 변경하여 작성 시 정상적으로 동작해서 문의드립니다.

    requre_relative 'Egoing' -> require_relative 'egoing'

    파일 이름 변경하고 다시 해보니 파일 이름을 적어주어야 하는게 맞는것 같습니다.
  7. 맥반장
    2020-03-29 완료!
  8. 악어
    2020.02.27 완료 감사합니다!!
  9. riversik
    2020.02.16
    완료
  10. 휴,, 좀 힘들었어요 ^^
  11. 내일은 코딩왕
    완료 감사합니다
  12. 도전차차차
    20191025
  13. 정 준상
    2019/10/13 완료
  14. 가재준
    완료
  15. 20190819 완료
  16. 허니비
    190807
  17. Ray Kim
    생활코딩에서 WEB1 HTML 수업을 들었었는데 그 때 이고잉님이 하신 말씀중 어려운것들은 어떤 특이 상황에 더 쉽고 편리하지만 응용하기 어렵고 쉬운것들을 기반으로 해서 만들어진다는게 떠오르네요! 지금 저희가 배우고 있는 어려워 지고있는 내용들도 쉬운것들로 이루어져 있다고 생각하니 더욱 열심히 하게 되네요!
  18. Ray Kim
    조금 쉬어가면서 수업올리셔도 됩니다~ 너무 무리하지마세요!
  19. 김민수
    함수를 사용할때 중복되는것을 방지하는 방법은
    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 파일의 정의된 함수만 손보면 된다는 것이다.
  20. 김민수
    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()) 로 호출하여야 한다
  21. 얼그레이
    감사합니다!! 하루 하루 너무 재미있게 배우고 있습니다 :)
    190603
  22. Sunday
    감사합니다
  23. hs4351
    190517 완료 감사합니다
  24. 정돌
    완전이해 감사!!!
  25. Hotak Choi
    190419!
  26. wiseman
    1904191117
  27. 김또쥬
    좋은강의 감사합니다
  28. huyk
    190404 완료 감사합니다
  29. 호두
    고맙습니다.
  30. 20190323 완료
  31. kmw8462
    감사합니다.
  32. 루이보스라떼
    18.11.27.
  33. 닐반
    2018. 10. 13.
  34. 김수
    20180906 감사해요
  35. 유닉스가이
    감사합니다.
  36. 공공
    배고프다 ㅋㅋㅋ ㅠㅠ
  37. 해릭
    180711 감사합니다.
  38. Ji Yeoun Park
    2018.6.28 감사합니다.
  39. Junbeom Jeong
    완료했습니다.
  40. 정병찬
    2018 05 31
    수강완료
  41. Jaeduk Jang
    완료했습니다. 감사합니다.
  42. 다람쥐
    감사합니다.
  43. 언어정복자
    함수 부터 코딩은 어려워 지는데 쉬운 설명 감사 드립니다.
  44. Gwanghyeon Harry Gim
    루비 질문입니다.

    require_relative 'Auth'에서 Auth 앞글자를 소문자 a로 바꿔도 로그인 프로그램이 잘 동작하는데요, 소문자로 바꿔도 코딩에 문제가 없나요?
  45. Always
    터미널로 루비나파이썬을 출력하면 개속 경로를 찾을수없다는 에러가뜨네요..
  46. 성현아빠
    complete
  47. GoldPenguin
    완료했습니다.
  48. 김태윤
    완료했어요
  49. KINTERACTA
    잘봤습니다. 감사합니다.
  50. hello world~
    모듈 완료
    감사합니다~
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기