Python & Ruby

함수 (function)

함수란 무엇인가?

함수 만들기

Python

def a3():
    print('aaa')
a3()

Ruby

def a3()
    puts('aaa')
end
a3()

실행결과

aaa

Python | Ruby 

리턴값

Python

def a3():
    return 'aaa'
print(a3())

Ruby

def a3()
    return 'aaa'
end
puts(a3())

실행결과

aaa

Python | Ruby 

입력값

 Python

def a(num):
    return 'a'*num
print(a(3))

Ruby

def a(num)
    return 'a'*num
end
puts(a(3))

실행결과

aaa

Python | Ruby

여러개의 입력값

 Python

def make_string(str, num):
    return str*num
print(make_string('b', 3))

Ruby

def make_string(str, num)
    return str*num
end
puts(make_string('b', 3))

실행결과

aaa

Python | Ruby

로그인 애플리케이션 (루비)

puts("아이디를 입력해주세요")
input_id = gets.chomp()

def login(_id)
  members = ['egoing', 'k8805', 'leezche']
  for member in members do
      if member == _id
          return true
      end
  end
  return false
end

if login(input_id)
  puts('Hello, '+input_id)
else
  puts('Who are you?')
end

 ideone.com

로그인 애플리케이션 (파이썬)

input_id = input("아이디를 입력해주세요.\n")
def login(_id):
    members = ['egoing', 'k8805', 'leezche']
    for member in members:
        if member == _id:
            return True
    return False
if login(input_id):
    print('Hello, '+input_id)
else:
    print('Who are you?')

ideone.com

참고

github.com

댓글

댓글 본문
작성자
비밀번호
  1. 강군
    지나가다가 도움이 될까 싶어 댓글답니다.

    함수를 정의할 때 def login(_id) 에서 괄호 안에 _id 를 매개변수(parameter) 라고 합니다. 주지하신대로 어떤 문자(이미 지정된 함수를 피하는 것이 좋지만)를 사용해도 작동하게 됩니다. 어렵게 생각하실 필요 없습니다. 매개변수는 그 함수 내에서만 작동하는 지역변수이고 함수를 호출할 때 입력 값으로 쓰인 input_id 값을 그대로 전달받아 정의된 함수 내에서 쓰이게 됩니다. (호출할 때 쓰인 변수(input_id)와 정의할 때 쓰인 매개변수(_id) 가 같을 필요는 없습니다. 실제 값(value)는 똑같지만요)

    수학에서의 함수를 생각해보면 f(x) = x + 1 이라는 함수가 있다고 했을 때, x 를 매개변수라고 하고 어떤 수를 대입하더라도 작동을 하는 것을 알 수 있죠. f(2) = 2 + 1 ..... f(3) = 3 + 1 ..... 이런식으로 말입니다. (여기서 실제 대입된 값 2와 3은 매개변수와는 별도로 전달인자(argument)라고도 합니다.)

    위의 예제를 보면, if 문에서 login 함수를 쓰면서 코드 맨 첫 줄 input 함수로 받은 input_id 변수를 login 함수의 입력값으로 쓰고 있죠. 여기서 input_id는 그대로 login 함수가 정의된 def login(_id) 의 _id 값으로 대입됩니다. 그것이 나중에 리스트에 들어있는 값과 비교될 때 사용이 되고 return 값은 True 혹은 False 로 출력이 되어 본래 함수를 호출한 if 문에서 쓰이게 되죠.

    도움이 되었으면 좋겠습니다.
    대화보기
    • 강군
      지나가다가 도움이 될까 싶어 댓글답니다.

      함수를 정의할 때 def login(_id) 에서 괄호 안에 _id 를 매개변수(parameter) 라고 합니다. 주지하신대로 어떤 문자(이미 지정된 함수를 피하는 것이 좋지만)를 사용해도 작동하게 됩니다. 어렵게 생각하실 필요 없습니다. 매개변수는 그 함수 내에서만 작동하는 지역변수이고 함수를 호출할 때 입력 값으로 쓰인 input_id 값을 그대로 전달받아 정의된 함수 내에서 쓰이게 됩니다. (호출할 때 쓰인 변수(input_id)와 정의할 때 쓰인 매개변수(_id) 가 같을 필요는 없습니다. 실제 값(value)는 똑같지만요)

      수학에서의 함수를 생각해보면 f(x) = x + 1 이라는 함수가 있다고 했을 때, x 를 매개변수라고 하고 어떤 수를 대입하더라도 작동을 하는 것을 알 수 있죠. f(2) = 2 + 1 ..... f(3) = 3 + 1 ..... 이런식으로 말입니다. (여기서 실제 대입된 값 2와 3은 매개변수와는 별도로 전달인자(argument)라고도 합니다.)

      위의 예제를 보면, if 문에서 login 함수를 쓰면서 코드 맨 첫 줄 input 함수로 받은 input_id 변수를 login 함수의 입력값으로 쓰고 있죠. 여기서 input_id는 그대로 login 함수가 정의된 def login(_id) 의 _id 값으로 대입됩니다. 그것이 나중에 리스트에 들어있는 값과 비교될 때 사용이 되고 return 값은 True 혹은 False 로 출력이 되어 본래 함수를 호출한 if 문에서 쓰이게 되죠.

      도움이 되었으면 좋겠습니다.
      대화보기
      • dldl
        감사합니다~ 정말 깔끔하고 쉽게 설명잘하시는거같아요 ㅎㅎ
      • 2017.01.04 완료
      • 쥬슈야
        _id 부분이 도저히 이해되지 않습니다. 일단 현재 강좌는 2번씩 봐봤습니다.
        _id부분을 다른 문자로 바꿔서 사용해도 작동이 잘 된다는 것도 확인해봤습니다. 예를들어 _id 부분을 xyz 로 바꿔서 작성해도 잘 작동 되더라고요. 궁금한점은 login() 여기에서 괄호안의 내용이 어떻게 적용되는 건지 자세히 알고 싶습니다.

        이고잉님이 평소처럼 시간의 흐름에 따라 화살표를 그어가며 코드들이 작동되는 원리를 설명해주시는 방식으로 한번 더 설명 해주실 수 있으면 좋겠습니다.
      • 박상준
        저도 처음에 똑같은 생각을 했었는데
        파이썬을 기준으로 입력값 강의를 다시 생각해보다가 알게되었습니다.

        def a(num):
        return 'a'*num
        print(a(100))

        이 강의에서 우리는 a라는 함수에 변수를 num으로 정의하여 a(100)을 프린트했을때 a*100이 되는 것을 알 수있습니다. 이처럼 로그인에서도 def login(_id)는 login이라는 함수에 변수를 _id로 지정한것이고
        if login(input_id)는 _id라는 변수에 input_id를 적용한 것이므로 결과값이 잘나오게됩니다.(a(100)을 적용한 것과 같음) 따라서 login(_id) 에 _id는 그저 변수를 지칭하기때문에 login(a)로 정의하고 if member == a:라고 함수를 바꿔도 결과값은 동일합니다. 답변이 길어졌는데 도움이 되셨으면 좋겠습니다.
        대화보기
        • 이정일
          질문이 있는데요~ def login(_id)에 사용한 _id변수명과 입력받은 input_id 는 변수 명이 다른데 def login(_id)가 어떻게 작동되는지 이해가 안되네요..

          입력값을 받아서 작동되게 되니 같은 변수명을 사용해야 하지 않나요?
        • techlistwoo
          「여러개의 입력값」의 「실행결과」는...
          bbb 가 되겠군요 ^^
          좋은 강좌 잘 보고 있습니다 ^^
        • JustStudy
          고맙습니다
        • user0123
          PHP 언어를 1년동안 배우다 와서 그런지
          for in 문이 새롭네요.
          쉽게 이해 되었습니다 ㅎㅎ
        • 냐옹이
          아주 설명을 잘하시네요. 쉽게 이해가 됩니다.
          보통은 좀 더 어렵게 설명하더라구요..
          고맙습니다.
        • 검사무운
          잘 봤습니다. 감사합니다.
          아무리도 몇번은 돌려봐야겠네요.
        • 개인적인 생각입니다만 if문에서 함수 호출을 하여 그 값을 리턴 받아서 다시 처리 하는 것보다는
          로그인 함수에서 member와 id값을 대조하여 프린트 함수를 내부에서 호출해주는게 좀 더 이해하기 쉽고 용이하지 않을까 생각이 듭니다. 아래와 같이 파이썬 코드를 작성해보았습니다.

          input_id = input("아이디를 입력해주세요.\n")
          def login(_id):
          members = ['egoing', 'k8805', 'leezche']
          for member in members:
          if member == _id:
          print('hello, '+input_id)
          import sys
          sys.exit()
          print('who are you?')
          login(input_id)


          들여쓰기가 안되네요 print('who are you') 문은 for 루프 문과 같은 선상의 들여쓰기 입니다.
        • 흠흠
          이부분을 이해하는데 3일이 걸렸습니다 ㅠ..(마지막코드) 대충보고 넘어가려했지만 코드를 외우고 왜 그렇게 동작하는지 이해하는데 3일이 걸렸네요. 저처럼 독학으로 혼자 처음으로 프로그래밍언어를 배우는사람은 여기서 막히는분들이 꽤 계실것같네요. 포기하지마세요!
        • 예. 들여쓰기를 해야 합니다. 파이썬에서는 다른 프로그래밍 언어처럼 int main(void){int var = 824; return 0;} 처럼 들여쓰기를 하지 않아 읽기 힘들어지는것을 방지하기 위해서 들여쓰기를 해야합니다. : 표기 아래서부터요.
          p.s 저랑 닉네임이 같으시네요 ㅎㅎ
          대화보기
          • 안녕하세요 파이썬의 함수가 들여쓰기 를 인식한다고 했는데 파이썬의 모든 구문은 들여쓰기을 통하여 정의가 되는건가요?
          • sigakorea
            이고잉님, "여러개의 입력값"의 실행결과는 bbb 입니다. ^^
            항상 수고해 주셔서 감사합니다.
          • Frank
            고맙습니다. ^^
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기