Python/이것이코딩테스트다with파이썬

10강 :: 함수와 람다 표현식

묘걍 2023. 11. 7. 21:49

👉🏻 함수

  • 함수(Function)란 특정한 작업을 하나의 단위로 묶어 놓은 것을 의미한다
  • 함수를 사용하면 불필요한 소스코드의 반복을 줄일 수 있다

- 특정한 프로그램 안에서 반복적으로 사용되는 작업 자체를 하나의 함수로 묶겠다

- 전체 소스코드의 양을 줄일 수 있다

- 필요할 때 마다 사용한다

🧩 함수의 종류

  •  내장함수: 파이썬이 기본적으로 제공하는 함수
    • 프로그램 개발 전반에서 자주 사용되는 기능을 한데 묶어 파이썬에 준비해 놓고 개발자들이 필요할 때 마다 쓸 수 있도록 제공
    • input(), print() 등
  • 사용자 정의 함수: 개발자가 직접 정의하여 사용할 수 있는 함수
    • 우리가 어떤 프로그램을 작성할 때 그 프로그램에서 자주 사용되는 기능을 사용자 정의 함수로 정의해서 사용

🧩 함수 정의하기

  • 프로그램에는 똑같은 코드가 반복적으로 사용되어야 할 때가 많다
  • 함수를 사용하면 소스코드의 길이를 줄일 수 있다
    • 매개변수: 함수 내부에서 사용할 변수
    • 반환 값: 함수에서 처리 된 결과를 반환

출처: 이것이 코딩테스트다 유튜브

- 함수 호출 시 함수에서 사용할 입력값으로 매개변수를 받음

- 함수에서 내부적으로 연산을 처리하고 그 결과를 반환하려고 할 때 반환값을 명시해 return 키워드와 함께 반환값 명시

- def: define, 정의하겠다

✅ 인자(argument)

- 함수를 호출할 때 넣는 값

- 위 코드에서 add(3, 7)의 3과 7

✅ 매개변수(parameter)

- 함수 내부적으로 전달 받고자 하는 값들을 명시

- 위 코드에서 def add(a, b)의 a와 b

 

🧩 파라미터 지정하기

  • 파라미터의 변수를 직접 지정할 수 있다
    • 이 경우 매개변수이 순서가 달라도 상관 없다

- 앞에 나온 코드에서는 3과 7이 차례대로 a와 b에 매핑되지만

- 이 코드에서는 지정해준대로 값이 들어간다

👉🏻 global 키워드

  • global 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 된다.

🎮 global 키워드의 사용

- 함수 안에서 사용되는 변수가 함수 바깥에 있는 전역변수와 동일하게 처리가 되도록 만들고 싶을 때

- C언어 같은 경우 global 키워드가 없으면 자동으로 함수 바깥의 전역 변수를 참조함

- 파이썬의 경우 함수 바깥에 정의된 변수를 참조하고자 한다면 global 키워드를 이용해야 한다

- a를 0으로 초기화하고 for문을 통해 func함수를 10번 호출한다

- func 함수는 a를 참조하여 그 값을 1씩 증가시킨다

🎮 global 키워드를 사용하지 않고 함수 내에 선언도 안 되어있을 경우

- 이 경우 함수 내에서는 a가 초기화 되지 않은 상태라 오류가 난다

- 함수 내부에는 a라는 변수가 선언되지 않은 상태

- 바깥 a를 참조하지는 않음, a라는 변수 자체가 없다고 인식

- 바깥 a를 참조하길 원하면 global 키워드 사용

🎮 함수 내에 선언되어있을 경우

- 이렇게 초기화를 해주면

- 1이라는 결과가 나온다

🎮 전역변수를 참조만 하는 경우

- 만약 값에 대한 변경 없이 값을 참조하기만 한다면 global 없이도 오류 없이 수행된다

🎮 전역변수로 선언된 리스트에 내부 메서드 호출

- 전역변수로 리스트가 선언되어 있을 때 전역변수로 선언된 리스트 객체의 내부 메서드를 호출하는 것도 가능

🎮 전역변수보다 지역변수가 우선

- 함수 내에 전역변수와 동일한 이름의 변수가 존재한다면지역변수가 우선적으로 참조됨

- 함수 밖에서는 전역변수가 참조됨

✅ 일반적으로 코딩테스트에서는

- 리스트 객체는 단순히 전역변수로 사용되는 경우가 많다

- 함수에서도 해당 변수를 바로 참조하는 경우가 많다

- 전역 변수와 지역 변수가 이름이 같지 않은 이상 이 부분에 대해 크게 신경쓰지 않아도 되는 경우가 많다

 

👉🏻 여러 개의 반환 값

  • 파이썬에서 함수는 여러 개의 반환 값을 가질 수 있다

- 자동으로 반환하고자 하는 변수들이 한번에 묶여

- 한꺼번에 반환된다

✅ 패킹

- 여러개의 변수들이 한꺼번에 반환되는 것

✅ 언패킹

- 함수 호출부에서 반환된 값들을 차례대로 특정 변수에 담는 것

 

👉🏻 람다 표현식

  • 람다 표현식을 이용하면 함수를 간단하게 작성할 수 있다
    • 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징이다

- 별도로 함수를 정의하는 것이 아니라 바로 한 줄의 람다 표현식으로 정의

- 함수 이름도 요구하지 않는다 (이름 없는 함수라고도 불림)

- 입력으로 받을 매개 변수 : 반환 값

- lambda a, b: a+b 자체를 하나의 add() 함수로 볼 수 있다

- 거기에 3과 7을 넣은 것

✅ 유용하게 사용되는 경우

- 어떤 함수 자체를 입력으로 받는 또 다른 함수가 존재할 경우 

- 함수의 기능이 간단하며 한 번 사용하고 말 함수

🧩 내장함수에서 자주 사용되는 람다 함수

- sort 등의 정렬 함수에서 lambda함수를 속성의 값으로 넣어줄 수 있다

- 리스트가 존재하고 그 리스트 내 원소는 튜플 형태

- 학생을 점수 순으로 오름차순 정렬

- array를 정렬하되 정렬 기준인 key 속성으로는 특정 함수를 넣어 정렬 기준을 넣어줌

🧩 여러 개의 리스트에 적용

- map 함수와 함께 사용 (각 원소에 함수를 적용하고자 할 때)

- 각 순서(위치)에 맞는 원소에 함수 적용

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/M_wLOmNRBN8?si=dhXBnG-rJsQP6rpP