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

    require_relative 'Auth'에서 Auth 앞글자를 소문자 a로 바꿔도 로그인 프로그램이 잘 동작하는데요, 소문자로 바꿔도 코딩에 문제가 없나요?
  33. Always
    터미널로 루비나파이썬을 출력하면 개속 경로를 찾을수없다는 에러가뜨네요..
  34. 성현아빠
    complete
  35. GoldPenguin
    완료했습니다.
  36. 김태윤
    완료했어요
  37. KINTERACTA
    잘봤습니다. 감사합니다.
  38. hello world~
    모듈 완료
    감사합니다~
  39. 봇대
    5번 동영상 내용이 확 다가오네요. 변수 부터 시작해서 조건문, 반복문, 중복 제거를 위해 함수, 또 중복 제거를 위해 모듈화.. 나중에 다시 한번 들어야 겠네요. 너무 잘 가르쳐주셔서 쾌속 진행 중입니다. 댓글 잘 안남기는데 안남길 수가 없군요. 다시한번 감사 드립니다. ^^;
  40. user1jena
    <auth.py>
    import prac35_1
    input_id = input('아이디 : ')
    if prac35_1.login(input_id):
    print ('Hello, ' + input_id)
    else:
    print ('Who are you?')

    <5.py>
    def login(_id):
    members = ['egoing','leezche','graphitiie']
    if _id in members:
    return True
    else:
    return False

    위와 같이 작성하여 작동되는지 확인했습니다. 고맙습니다~
  41. user1jena
    아 그리고 모듈에 대한 개념이 애매했었는데 이고잉님 강의 덕분에 개념이 잘 잡힌 것 같아요. 항상 한줄한줄 설명해주시는 것도 그렇고 비유 등을 통해서 알려주신 덕분에 기본적인 개념이 잘 잡히고 있습니다. 고맙습니다!
  42. user1jena
    처음 접한게 파이썬이라 그런지 확실히 파이썬이 더 편하고 접근하기가 좋네요~앞으로 주로 사용하게 될 언어도 파이썬이다 보니 전 파이썬을 골라서 가겠습니다! 여러 언어를 사용하시는게 참 대단하시단 생각이 많이 들어요. 이렇게 비교분석 해주시는걸 보는 재미도 쏠쏠합니다. 항상 좋은 강의 고맙습니다~
  43. 제이케이
    개인적인 생각이지만... 루비보다는 파이썬이 훨씬 깔끔하다는 느낌이네요...

    강의 감사합니다. ^^
  44. 미림_likelion
    수강 완료했습니다. 감사합니다,
  45. message
    데이터 분석을 아직은 시작안했지만 참으로 흥미롭게 재미있는 강의 인듯 싶습니다.
    이해도 쏙쏙 되고 정말 하나의 코드가 이렇게 역할을 할수 있구나
    하나의 코드로 인해 변화가 되구나 라는 것을 알게되었습니다.
  46. 심화평
    17-06-27 감사합니다! (개인적으로 루비 보다는 파이썬으로)
    피닉스os 멀티부팅 하려다 실패해서 백업도 못하고 윈도우 밀고..(실습파일이랑 웹서버 날아갔네요) 대신 우분투 멀티부팅은 성공해서
    우분투로 해보고싶은거 하는중입니다. 이제 다시 열심히 이고잉님 파이썬강좌를 들어야겠네요
  47. JaeMin Choi
    유다시티에서 강의 들으면서 이해가 쉽지 않을때
    이고잉님의 강의에 와서 많은 도움을 받습니다. 특히 개념 잡을 때 탁월하세요!
    감사합니다.
  48. 나만의 부
    2017.04.19 감사합니다~
  49. 감사합니다.
  50. 문돌이
    좋은 강의 감사드립니다.
    from jin100035 import a
    import k8805
    if auth.login(input_id, input_pwd)
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기