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. 4노라면
    오~~무슨 뜻인지 이해(여러번 읽어보고 이해가 되네요 ㅎㅎ)가 됩니다.

    감사합니다~^^
    대화보기
    • Jaewon Lee
      저도 초급 비전공자라.. 제 아는 한에서 답을 해 드리자면...
      -----------------------------------
      우선 if member.... 문이 for 문에 속하는 문이므로 안쪽으로 한번 더 들여쓰기 해야할 것 같구요.

      결과만 보면 차이는 없을 수 있지만,
      login 이라는 함수를 다른 코딩에서 활용할 수 있는 확장성에서는 크나큰 차이가 있다고 보시면 될 것 같아요. egoing님이 작성한 login 함수의 경우, 아이디 확인에 따른 T/F 값을 반환하기에 이를 활용하여 다른 함수에서 얼마든지 활용할 수 있게 되겠지만,

      4노라면 님이 작성한 login 함수의 경우, 반환값이 (egoing 입력시) 'Hello, egoing' 이나, (abfc 입력시) 'Who are you?' 라는 반환값만 나오므로 이를 활용할 수 있는 확장성에는 큰 제약이 발생한다고 보여지네요.
      -----------------------------------
      여기까지 초급자 입장에서 개인적으로 생각이 드는 차이점입니다. ^^
      대화보기
      • 나만의 부
        2017.04.18 감사합니다~
      • edoctor
        저는 코딩을 생활코딩을 처음배우는 사람이라 정확히 이해한건지 모르겠지만 제가 이해한대로 설명드리겠습니다.

        5.py 를 기준으로 함수구문은 return False로 끝이납니다. 그 함수구문은 결국 'True' 혹은 'False' 라는 결과값을 내게 되고, 그 다음 나오는 if else 구문은 함수에서 결과로 낸 ' True' 혹은 ' False' 의 결과 값에 따라서(불리언) 실행되는 것입니다. 그래서 input_id 와 _id 가 달라도 상관이 없게 되는 것입니다.
        결국 컴퓨터에서든, 수학에서든 달라도 아무런 문제가 없게 됩니다.
        대화보기
        • 4노라면
          input_id = input("아이디를 입력해주세요.\n")
          def login(_id):
          ++++members = ['egoing', 'k8805', 'leezche']
          ++++ for member in members:
          ++++ if member == _id:
          ++++++++ return 'Hello, '+_id
          ++++return 'Who are you?'
          print(login(input_id))
          리턴값을 이렇게 주는것 하고 차이가 있는건가요?
        • 달리는 중입니다.

          모두들 화이팅 하세요.
        • http://ideone.com/aFNlX5

          이렇게도 해봤는데 어떤 부분이 문제라서 문구가 세 개씩이나 뜨는 걸까요? ㅠ
        • seeong2
          ---------------4.py--------------------------------------
          def a(str,num):
          return str*num
          input_str = input('say something?\n')
          input_num = input('how many?\n')
          print(a(input_str,int(input_num)))
          --------------------------------------------------------
          $ python3 4.py
          say something?
          hi
          how many?
          2
          hihi
        • Philip Oh
          수포자였는데, 다시금 함수란 단어를 듣게될줄이야...
          좋은 강의 감사합니다~
          다시 돌려 봐야겠습니다 ㅋㅋ
        • cancaodosang
          /*수학에서의 함수를 생각해보면 f(x) = x + 1 이라는 함수가 있다고 했을 때, x 를 매개변수라고 하고 어떤 수를 대입하더라도 작동을 하는 것을 알 수 있죠. f(2) = 2 + 1 ..... f(3) = 3 + 1 ..... 이런식으로 말입니다. (여기서 실제 대입된 값 2와 3은 매개변수와는 별도로 전달인자(argument)라고도 합니다.) */

          --->f(3)=5+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 문에서 쓰이게 되죠.

            도움이 되었으면 좋겠습니다.
            대화보기
            • 감사합니다~ 정말 깔끔하고 쉽게 설명잘하시는거같아요 ㅎㅎ
            • 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 자세히 보기