Module : 파일을 디렉토리 별로 정리하듯이, 연관되어 있는 기능들을 묶어놓은 일종의 한 부품.
코드를 재사용하기에 좋다. 일종의 템플릿을 구현해놓고 사용한다고 보면 된다.
쉽게 생각하면 관련된 함수들을 저장시켜놓은 디렉토리라고 생각하면 이해가 쉽다. (대신 꼭 함수들만 그런 것은 아니라는 것 주의)
[ 이미 존재하는 모듈에 대한 사용 ]
Python :
import math
print(math.ceil(2.9))
print(math.floor(2.9))
print(math.sqrt(16))
Ruby :
puts(Math.sqrt(16))
루비에는 Math 모듈이 기본적으로 내장되어 있다.
[ 모듈 정의 / 사용 ]
Python :
good.py (모듈 역할을 해줄 파일)
a = 3;
def h():
return 'hello'
def g():
return 'good'
---
import good as k
# from good import h -> good 모듈에서 h 함수만 가져온다. 사용할 땐 그냥 바로 h()
print(k.a)
print(k.h())
print(k.g())
Output :
3
hello
good
이렇게, 모듈은 코드 묶음을(=파일) 그대로 가져와서 부품으로써 사용할 수 있는 것.
Ruby :
루비에서는 모듈의 이름을 대문자로 시작시켜야한다.
module Good
# a = 5 사용이 안되네.
module_function()
def h()
return 'hello'
end
end
puts(Good.h())
파이썬의 경우 파일을 분리해서 모듈을 만드는데, 루비의 경우 파일을 분리해서 만들어 줄 수도 있고, 이렇게 파일을 분리하지 않고도 모듈을 정의할 수 있다.
Q_파이썬에서는 변수같은 값을 모듈에 넣고도 사용이 가능했으며, 값을 바꿔줘도 잘 작동하는데 루비에서는 사용이 안됐다. 무슨 다른 방법이 있는 걸까 아니면 원래 안되는걸까.
->
module Good
DD = 5
module_function() // 모듈 안의 함수를 참조시키기 위해서 필수로 넣어줘야 한다고 함.
def h()
return 'hello'
end
end
puts(Good::DD)
루비에서는 대문자로 작성하여 선언하면 값의 사용이 가능하고, 사용할 때엔 ::를 사용해서 참조해줘야 한다.
그치만 파이썬에서 처럼 변수역할로 동작하진 못하는 것 같다. 값을 바꿔줄 수가 없다.
파이썬과 루비에서의 모듈은 조금은 다른 것 같다. 포함 범위가 조금 다른 느낌. 물론 사용방법도 다르고.
파이썬 모듈 : dojang.io/mod/page/view.php?id=2447
루비 모듈 : edu.goorm.io/learn/lecture/2011/한-눈에-끝내는-루비-기초/lesson/83331/모듈
이번엔 루비에서 파일을 분리하여 모듈을 정의하는 방법
Good.rb ( good.rb 해도 됨. 모듈 이름과 대소문자만 상관없이 같으면 됨 )
module Good
DD = 5
module_function()
def h()
return 'hello'
end
end
---
require 구문으로 모듈 이름 참조.
# require './Good' # 경로를 표시해줘야함. 이 경우엔 상대경로
require_relative 'Good' # 아예 이렇게 해줄 수도 있음. 이게 편함.
puts(Good.h())
'[Python & Ruby]' 카테고리의 다른 글
[Python & Ruby] 클래스/객체 생성 (0) | 2020.12.24 |
---|---|
[Python & Ruby] 객체 지향 프로그래밍 (0) | 2020.12.22 |
[Python & Ruby] Block in Ruby (0) | 2020.12.18 |
[Python & Ruby] 함수에서의 다양한 생략 - Ruby (0) | 2020.12.18 |
[Python & Ruby] 함수 (Function) (0) | 2020.12.16 |