[Week2] (파이썬 프로그래밍) 04. 함수

jjooki-entist·2022년 8월 31일
0

💡 함수(Function) : 한 가지의 기능을 하는 코드 묶음. Input을 받아서 처리하고 Output을 돌려주는 코드.

Source : https://ko.wikipedia.org/wiki/함수#/media/파일:Function_machine2.svg

함수

  • 함수(function, method)는 기능(function)을 의미한다.
  • 함수의 input을 parameter(또는 argument)라고 한다.
  • 함수는 input을 받아서 주어진 기능대로 처리한 뒤, output을 return한다.
    • return 없는 함수도 가능하다.
  • 정의한 함수를 사용하는 것을 function call이라고 한다.
  • 함수는 call이 있을 때만 동작하고, return을 만나거나 구문이 더 이상 없으면 함수는 끝나고 call이 있던 자리로 돌아간다.
# function definition syntax example
def function1(a, b):
	something = ...
	<statement>
	<statement>
	...
	...
	return something

result = function1(3, 5)

특징

  • def <function_name> (<parameter1>, <parameter2>, ... )의 형태로 함수 prototype을 정한다.
  • 함수를 호출하면 정의한 code block내의 코드를 실행한다.
  • 함수의 input인 parameter에 어떤 값이 들어오고, 어떤 결과를 return할지 잘 정해야 한다.
    (parameterization)
  • 함수를 사용하면 코드를 구조화하기 쉽다!
  • 코드의 구조화가 잘되어 있으면, 가독성도 높고 유지/보수를 하기가 편하다.
  • 기존 코드를 설계할 때부터 함수로 작성하는 경우도 있고, 우선 기능을 하는 코드를 만든 다음에 재구조화를 하는 경우도 있다.
  • 이러한 작업을 Refactoring 이라고 합니다.
  • 구조화된 코드는 코드의 재사용성(Reusability)가 향상됩니다. → 코드의 생산성 향상!

Keyword parameter

  • parameter가 너무 많아서 외울 수도 없을 땐 default parameter를 지정해놓고, 필요한 parameter만 입력받는다.
  • 이렇게 정의되는 함수의 parameter를 keyword parameter 라고 한다.

global/local parameter

  1. global parameter(전역변수)
    : 일반적인 변수
  2. local parameter(지역변수)
    : 함수 내의 변수, 함수 밖에서는 없는 변수 취급
def change_name(name):
    print(f"2. {name}")
    name = 'Park'  # Local
    print(f"3. {name}")
    return name

name = 'Lee'       # Global
print(f"1. {name}")
s = change_name(name)
print(f"4. {name}")

위 코드의 결과는
1. Lee
2. Lee
3. Park
4. Lee
이다.

위 예시에서 change_name함수를 거치고 나오는 4번 출력 결과가 Park이 아닌 Lee라는 사실을 통해 지역변수가 어떻게 돌아가는지 이해할 수 있다.

Lambda function

  • 굉장히 간단한 함수가 있는 경우, 한 줄짜리 함수로 간편하게 사용할 수 있다.
  • 이런 함수를 Lambda 함수라고 하며, lambda 함수와 반복문을 통해 함수의 정의없이 다양한 프로그래밍이 가능하다.
  • lambda expression은 1줄짜리 함수라는 뜻으로 inline function이라고도 한다.
def add(x, y):
	return x + y
    
l = lambda x, y: x + y
add(2, 3)
l(2, 3)

두 함수의 결과값은 5로 동일하다.

# 문자열의 길이를 기준으로 오름차순 정렬을 할때
strings = ['yoon', 'kim', 'jessica', 'jeong']
strings.sort(key=lambda x: len(x))
print(strings)

lambda function 활용의 대표적인 예시는 위와 같다.
꼭 기억하면 나중에 심심치 않게 잘 써먹을 수 있을 것이다!

Key Points

  1. 함수를 정의해서 사용할 때도, : 사용이 중요하다.
  2. 함수를 사용하는 이유는 코드의 재사용성을 높이기 위해서 사용한다.
  3. 함수들의 구조를 잘 짜면 유지보수하기 쉬운 좋은 코드를 만들 수 있다.
profile
데이터 사이언티스트를 꿈꾸는 3년차 제품총괄입니다.

0개의 댓글