function
<ruby>
def a3()
puts('aaa')
end
a3()
<python>
def a3():
print('aaa')
a3()
function 에서 두 언어의 차이점은 ruby는 함수 마지막에 end로 끝나야 한다는 점
python은 함수이름 뒤에 : 클론을 붙힌다.
def f4(a1)
return a1
end
puts(f4('f4'))
def f5 a1
return a1
end
puts(f5 'f5')
def f6
a = 1
b = 2
a + b #return을 생략해도 맨 마지막 값이 자동으로 return
end
puts f6
ruby에서는 문법적으로 생략하는 경우가 있다. 함수에서 () 를 생략가능하다.
또한, return도 생략가능 함수 끝에 나오는 값을 자동으로 return
block
5.times(){puts '5times'}
2.times(){puts '2times'}
3.upto(5){|i| puts i}
7.downto(5){|i| puts i}
ruby에서는 block이란 것을 사용해서 특정한 기능을 좀 더 간편하게 사용할 수 있 도록 해주는 것이있다.
int에서 쓰이는 times() 함수를 쓰면 뒤에 {}안에 있는 (block안에 있는) 것을 int 값만큼 반복해주는 기능
그 밖에도, 지정해준 숫자 사이에 횟수만큼 반복시켜주는 upto() 도 있고 다양한 종류가 존재한다.
times과 while문의 차이점
5.times() {|i| puts i}
i = 0
while i < 5
puts i
i += 1
end
times()를 사용하는 것과 while문을 사용하는 것은 똑같은 기능을 한다.
하지만, times()는 더 간편한 대신에 한 기능으로 밖에 사용을 하지 못한다.
while문은 직관성이 떨어지는 대신에 다양한 기능으로 응용해서 사용가능하다.
module
비슷한 함수가 모여있는 것이 module이다.
module을 사용하면 코딩을 재활용할 수 있고, 유지보수가 편하게 만들어준다.
<ruby>
puts(Math.sqrt(16))
<python>
import math #math라는 module을 불러온다.
#math 수학과 관련된 함수들은 math라는 module에 있다.
print(math.ceil(3.1))
print(math.floor(3.9))
print(math.sqrt(16))
print(math.factorial(3))
수학관련 함수를 사용하기 위해서 수학관련 함수가 모여있는 math module을 이용
ruby에서는 module을 가져올 때 python 처럼 import할 필요가 없습니다.
python에서 module을 만들어 사용하는 법
<bill1224.py 파일>
def a():
return 'B'
<egoing.py 파일>
def a():
return 'a'
def b():
return 'b'
def c():
return 'c'
만들어놓은 함수 파일들을 module로 가져다 쓰기
from egoing import a
#from egoing import a as k -> 함수 a를 k 로 변경해서 사용한다.
import bill1224
#import bill1224 as k -> module명을 k로 변경해서 사용
#print(k.a())
print(a())
print(bill1224.a())
<from 가져올 파일 import 함수이름 > 과 <mport 파일이름 >의 차이점
<from 가져올 파일 import 함수이름 >는 파일전체를 불러오는 것이아니라 지정 함수만 불러오기 때문에 효율적
ruby에서 module을 만들어 사용하는 법
ruby에서는 파일로 만들어서 사용해도되고 파일로 만들지 않아도 사용가능하다.
ruby는 무조건~!! module 이름의 맨 앞은 대문자로~!
<bill1224.rb 파일>
module Bill1224
module_function()
def a()
return 'B'
end
end
<egoing.rb 파일>
module Egoing
module_function()
def a()
return 'a'
end
end
만들어놓은 함수 파일들을 module로 가져다 쓰기
require_relative 'Egoing'
require_relative 'bill1224'
puts(Egoing.a())
puts(Bill1224.a())
require을 사용하면 절대경로를 입력해야한다??? require_relative를 사용하면 현재 있는 파일을 기준으로 상대경로 기준으로 파일명을 적어두면 된다.
module_function 은 module안에 있는 여러 함수를 module의 함수로 만들어주는 역할을 하는 것
모듈명.함수이름() 으로 사용되게 해주도록 모듈의 함수를 정의해주는 함수
'IT 공부 > python' 카테고리의 다른 글
2020-10-07 Python 과 Ruby 객체 지향 프로그래밍(3) (0) | 2020.10.07 |
---|---|
2020-10-06 Python 과 Ruby 객체 지향 프로그래밍 (2) (0) | 2020.10.07 |
2020-10-06 Python 과 Ruby 객체 지향 프로그래밍 (0) | 2020.10.06 |
2020-10-05 Python 과 ruby (0) | 2020.10.05 |
2020-10-02 python 과 ruby (0) | 2020.10.02 |