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. 나만의 부
    2017.04.18 감사합니다~
  2. 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 자세히 보기