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

#### 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")
print('Hello, '+input_id)
else:
print('Who are you?')```

### Ruby

#### auth.rb

```module Auth
module_function()
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()
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 완료 감사합니다
버전 관리
 2015-06-30 13:12:56 egoing
현재 버전 2015-06-30 13:12:56
graphittie 자세히 보기
• 토픽 0
• 모듈 0
• 코스 0
• 봤어요 0
• 댓글 0
• 명예의 전당 0