👉🏻 함수
- 함수(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
'Python > 이것이코딩테스트다with파이썬' 카테고리의 다른 글
12~13강 :: 그리디 알고리즘 개요와 문제 풀이 (0) | 2023.11.09 |
---|---|
11강 :: 자주 사용되는 표준 라이브러리 (2) | 2023.11.09 |
8~9강 :: 조건문, 반복문 (0) | 2023.11.02 |
7강 :: 기본 입출력 (0) | 2023.11.02 |
5~6강 :: 문자열, 튜플 자료형, 사전, 집합 자료형 (0) | 2023.11.01 |