함수 (Function)

프로그래밍을 처음으로 접해본다면, 함수라는 단어는 수학에서 자주 들어봤을 거야.
1차함수, 2차함수 이런거 있잖아. 수학에서의 함수와 프로그래밍에서의 함수는 그 의미가 같아.
수학을 못한다고 해서 프로그래밍을 어렵게 생각할 필요는 없어. 프로그래밍은 수식에 대한 이해가 없어도, 논리에 대한 이해만 있으면 누구나 할 수 있어.
논리적 사고능력이 중요한거지, 수식을 풀어내는 능력이 중요한 것은 아니야.

위키백과에 함수에 대한 적절한 그림이 있어서 퍼왔어.

함수를 간단히 표현하면 '뭔가를 집어넣으면, 그에 대한 결과값이 나오는 것' 이라고 말할 수 있어. 공장같은 느낌이랄까?

Python 에서 함수를 정의(definition) 하는 방법을 알아보자.

def 함수이름(변수1, 변수2, ... 변수n):  # 함수의 정의

    ...  # 로직(logic, 논리, 알고리즘)
    
    return 결과값
    
    
    
결과값 = 함수이름(변수1, 변수2, ... 변수n)  # 정의된 함수를 실행하여 결과값을 받음

파이썬에서 함수를 정의할때는 def 라는 키워드를 사용해.
그리고 함수 이름을 적고, 함수에서 사용할 매개변수(parameter) 값들을 작성한 뒤.
함수에서 필요한 로직을 작성하고, 결과값을 return 하는 구조야.

※ 매개변수(parameter) 라는 건, 함수의 매개체가 되는 변수를 말함.

프로그래밍은 인생이니까, 일상생활에서 예를 찾으면 아주 쉬워.
'햄버거' 만드는 것을 예시로 들어볼게.
햄버거의 재료에는 , 양상추, 패티, 슬라이스치즈 가 들어간다고 해보자.
햄버거 만들기 시작!

1. 빵을 두 조각으로 나눈다.
2. 빵 아랫조각을 테이블에 놓는다.
3. 빵 아랫조각 위에 양상추를 올린다.
4. 패티를 굽는다.
5. 양상추 위에 패티를 올린다.
6. 패티 위에 슬라이스치즈를 올린다.
7. 슬라이스치즈 위에 빵 윗조각으로 덮는다.
8. 햄버거 완성!

이것을 함수로 만들어볼게. 문법이 정확하지는 않으니까 대략 이런 느낌이구나 라는것만 봐줘 :-)

def 햄버거_만들기(, 양상추, 패티, 슬라이스치즈):
    윗조각, 아랫조각 =/ 2
    햄버거 = ''  # 함수의 최종 결과로 내보낼 햄버거의 초안 (빈값)
    햄버거 += 아랫조각    # 빵 놓음
    햄버거 += 양상추    # 양상추 올림
    구운패티 = 패티_굽기(패티)  # 아래에 선언된 '패티_굽기' 함수에 패티를 넣고 실행
    햄버거 += 구운패티  # 패티 올림
    햄버거 += 슬라이스치즈  # 치즈 올림
    햄버거 += 윗조각
    return 햄버거  # 결과값으로 햄버거 return

def 패티_굽기(패티):
    구운패티 = 패티 + 2분간 불로 지짐
    return 구운패티  # 결과값으로 구운패티를 return

이게 프로그래밍에서 사용하는 함수(function)의 개념이야.
function 은 '기능' 이라는 뜻이야. 즉, 함수는 우리 인생에 특정 영역의 기능을 구현해놓은 거야.

수학에서 사용하는 수식예를들면: f(x) = ax + b 보다 훨씬 쉽지?
우리는 햄버거_만들기 라는 함수를 실행하기만 하면 언제든지 무한히 햄버거를 만들어낼 수 있어.

위의 햄버거_만들기 라는 함수와 패티_굽기 라는 함수를 이용해서 햄버거 타이쿤 같은 게임을 만들수도 있을거야!

햄버거1 = 햄버거_만들기(빵, 양상추, 패티, 슬라이스치즈)
햄버거2 = 햄버거_만들기(빵, 양상추, 패티, 슬라이스치즈)
햄버거3 = 햄버거_만들기(빵, 양상추, 패티, 슬라이스치즈)
...
햄버거n = 햄버거_만들기(빵, 양상추, 패티, 슬라이스치즈)

이런게 함수(function)이고, 함수는 프로그래밍의 핵심적인 개념이야.

인생에서 일어나는 반복적인 일들을 자동화, 정형화 시켜놓은 것.

프로그래밍에서의 함수는 결론적으로 이렇게 말할 수 있어.

어떤 행동, 어떤 행위, 어떤 기능

하나의 프로그램은 수 많은 함수들의 조합으로 구성된다고 보면 돼.
우리의 인생이 수 많은 사건들의 조합으로 이루어지는 것 처럼 말이야.

  • 함수를 실행하는 것을 보통 호출(call) 한다고 표현해. (예: "햄버거_만들기 함수를 호출(call)해서 햄버거 를 받아온다.")
  • 함수 내에서 자기자신의 함수를 또 호출할 수도 있어. 이를 재귀함수(Recursive Function) 라고 해.
profile
🔥 from Abstraction to Realization

0개의 댓글