복대가리의 개발

[기타] 스터디/[혼공학습단 9기] 파이썬

파이썬 공부 (4)

복대가리 2023. 2. 5. 09:40
728x90

이번 포스팅 내용

1. 함수 만들기

2. 함수의 활용

3. 함수 고급

4. 요약 키워드 정리

 

1.  함수 만들기

함수와 관련된 용어를 몇 가지 정리해 보겠습니다.

함수를 사용하는 것은 함수를 호출한다라고 표현합니다.

함수를 호출할 때는 괄호 내부에 여러 가지 자료를 넣게 되는데, 이러한 자료를 매개변수라고 합니다.

함수를 호출해서 최종적으로 나오는 결과를 리턴값 이라고 부릅니다.

 

함수는 한마디로 '코드의 집합'입니다.

 

1
2
3
4
#함수의 기본형태
def 함수 이름():
    문장
 
cs

 

다음은 함수를 호출하여 실행하는 간단한 예제입니다.

 

함수에 매개변수 만들기

1
2
3
#함수에 기본형태와 매개변수
def 함수 이름(매개변수, 매개변수, ...):
    문장
cs

 

다음은 함수의 매개변수를 사용하는 예제입니다.

 

함수의 괄호 내부에 value와 n이라는 식별자를 입력했습니다. 

매개변수 value에는 "HI"가 들어가고, n에는 5가 들어가게 되어 "HI"를 5번 출력하게 되는 것입니다.

매개변수와 관련된 TypeError

함수를 호출할 때 매개변수를 넣지 않거나, 많이 넣게되면 TypeError가 나는 것을 확인해볼 수 있습니다.

가변 매개변수

앞서 살펴본 함수들은 함수를 선얼 할 때의 매개변수와 함수를 호출할 때의 매개변수가 같았어야 했습니다, 그러

나 print() 함수의 경우 매개변수를 원하는 만큼 입력 할 수 있었는데요,

이처럼 매개변수를 원하는 만큼 받을 수 있는 함수를 가변 매개변수 함수라고 합니다.

가변 매개변수란 매개변수 개수가 변할 수 있다는 의미입니다.

1
2
3
#가변 매개변수 함수 형태
def 함수 이름(매개변수, 매개변수, ..., *가변 매개변수):
    문장
cs

 

가변 매개변수를 사용할 때 제약사항 두가지가 있습니다.

  1. 가변 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.
  2. 가변 매개변수는 하나만 사용할 수 있습니다.

가변 매개변수 *values는 리스트처럼 사용하면 됩니다.

기본 매개변수

'매개변수=값' 형태로 되어있는 매개변수가 존재합니다, 이를 기본 매개변수라 부르며 매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값 입니다.

기본 매개변수도 제약사항 한가지가 있습니다.

  1. 기본 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.

n을 입력하지 않을 경우에는 기본값이 2로 들어갑니다.

가변 매개변수와 기본 매개변수 테스트

이번엔 가변 매개변수와 기본 매개변수 둘을 같이 써도 되는지 확인 해보겠습니다.

기본 매개변수가 가변 매개변수보다 앞에 올 때

 

기본 매개변수는 가변 매개변수 앞에 쓸 수 없습니다.

가변 매개변수가 기본 매개변수보다 앞에 올 때

 

가변 매개변수가 기본 매개변수보다 우선시 되는 것을 확인할 수 있습니다.

키워드 매개변수

가변 매개변수와 기본 매개변수를 같이 사용하기 위해서는 키워드 매개변수를 사용하여야합니다.

"n=3"과 같이 매개변수 이름을 직접적으로 지정해서 값을 입력해야합니다.

기본 매개변수 중에서 필요한 값만 입력하기

 

리턴

input() 함수를 생각해보면

value = input("> ")

와 같이 결과를 받아서 사용하였습니다. 이와 같은 함수의 결과를 리턴값이라고 부릅니다.

자료 없이 리턴하기

함수 내부에서는 return 키워드를 사용할 수 있습니다.

이 키워드는 함수를 실행했던 위치로 돌아가라는 뜻으로, 함수가 끝나는 위치를 의미합니다.

함수 내부에서 print()를 두번 사용하였는데 중간에 return 키워드로 인하여 print()함수 한번만 실행되었습니다.

자료와 함께 리턴하기

return 키워드 뒤에 100이라는 숫자를 입력하면 100을 가지고 리턴하여 value 변수 안에 들어가는것을 확인해볼 수 있습니

다.

아무것도 리턴하지 않기

아무것도 리턴하지 않을 경우 None을 출력합니다.

 

기본적인 함수의 활용 (기본 미션)

범위 내부의 정수를 모두 더하는 함수

 

 

2. 함수의 활용

이번에는 함수를 활용하는 주요 패턴에 대해서 살펴보겠습니다.

재귀 함수

재귀란 '자기 자신을 호출하는 것'을 의미합니다.

재귀 함수를 이용하여 팩토리얼을 구해보겠습니다.

 

n이 0이라면 1을 리턴 / n이 0이 아니라면 n * (n-1)!을 리턴하면 됩니다.

재귀 함수의 문제

재귀 함수는 상황에 따라서 같은 것을 기하급수적으로 많이 반복하는 문제가 있습니다.

이러한 문제로 해결방안을 찾게 되었는데 그 방법이 메모화라는 기술입니다.

이번엔 재귀함수를 이용하여 피보나치 수열을 구현해보고 문제점을 찾은 후 메모화를 이용해보겠습니다.

여기서 피보나치에 n의 값을 크게 주면 피보나치 숫자를 구하는데 정말 오랜시간이 걸리게 됩니다.

35번째 피보나치 수를 구하기 위해서는 덧셈을 무려 18454929번 해야 하기 때문입니다.

덧셈을 이렇게 많이 하는 이유는 한번 구했던 값이라도 처음부터 다시 계산해야되기 때문입니다.

여기서 찾은 해결 방안은 위에서 설명한 메모화입니다.

메모화

딕셔너리를 사용해서 한번 계산한 값을 저장합니다. 이것을 메모한다라고 표현하며 딕셔너리에 값이 있으면 처리를 수행하지 않고 곧바로 값을 전달해주며 코드의 속도를 빠르게 합니다.

메모화의 경우 재귀함수와 많이 사용되는 기술입니다.



조기리턴

보통 if else 조건문을 만들고 각각의 마지막 부분에 리턴하는 것이 일반적이 였으나, 요즘에는 필요할 때 하면 된다는 인식이 널리 퍼져 코드 흐름 중간에 return 키워드를 사용하는 것을 조기 리턴(early returns)이라고 부릅니다.

 

리스트 평탄화하는 재귀 함수 만들기

리스트 평탄화는 중첩된 리스트가 있을 때 중첩을 모두 제거하고 풀어서 1차원 리스트로 만드는 것을 의미합니다.

 

 

3. 함수 고급

파이썬에서 함수를 조금 더 편리하게 사용할 수 있는 다양한 기능들 중 튜플과 람다를 알아보겠습니다.

튜플

리스트와 비슷한 자료형 이며, 다른 점은 한번 결정된 요소를 바꿀 수 없다는 것입니다.

(데이터, 데이터, 데이터, ...)

 

튜플은 내부 요소 변경이 불가능 합니다.

 

괄호 없는 튜플

괄호 없이 여러 값을 할당할 수 있어 자주 사용되는 형태입니다.

 

 

변수의 값을 교환하는 튜플

 

a,b = b,a라는 코드만으로 값이 바뀝니다.

튜플과 함수

 

튜플은 함수의 리턴에 많이 사용합니다. 함수의 리턴에 튜플을 사용하면 여러 개의 값을 리턴하고 할당할 수 있기 때문입니다.

람다

함수라는 '기능'을 매개변수로 전달하는 코드를 많이 사용합니다.

그리고 이런 코드를 조금 더 효율적으로 작성할 수 있도록 파이썬은 람다라는 기능을 제공합니다.

함수의 매개변수로 함수 전달하기

함수의 매개변수에 사용되는 함수를 콜백 함수라고 합니다.

 

 

filter()함수와 map()함수

함수를 매개변수로 사용하는 대표적인 표준 함수로 map()함수와 filter()함수가 있습니다.

파이썬이 표준으로 제공하는 함수를 '내장함수'또는 '표준함수'라고 합니다.

  • map() : 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성해주는 함수
  • filter() : 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해주는 함수

 

람다의 개념

매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것도 번거롭기 때문에 생각한 개념이 간단한 함수를 쉽게 선언하는 방법인 람다라고 합니다.

lambda 매개변수: 리턴값

filter와 map 함수를 사용한 코드로 람다를 사용해보았습니다.

 

아니면 함수를 선언하지도 않고 매개변수로 바로 넣을 수 있습니다.

 



파일 처리

파이썬 표준 함수에는 파일과 관련된 처리를 하는 함수가 기본으로 제공됩니다.

파일은 크게 텍스트파일과 바이너리 파일로 나뉘는데, 이번에는 텍스트 파일과 관련된 내용만 살펴보겠습니다.

파일을 처리하려면 파일 열기, 파일 읽기, 파일 쓰기를 할 수 있습니다.

파일 열고 닫기

파일을 열 때는 open()함수를 사용합니다.

파일 객체 = open(문자열: 파일 경로, 문자열: 읽기 모드)

읽기 모드로는

 

읽기 모드 문자열 설명
w write 모드(새로 쓰기 모드)
a append 모드(뒤에 이어서 쓰기 모드)
r read 모드(읽기 모드)

파일을 닫을 때는 close()함수를 사용합니다.

파일 객체.close()

 

반드시 open()함수로 열면 close()함수로 닫는 습관을 길러주세요.!!

with 키워드

프로그램이 길어지면 파일을 열고 닫지 않는 실수를 하는 경우가 생길 수 있어 방지하기 위해 with 키워드를 사용합니다.

 

1
2
3
#with 키워드
with open(문자열: 파일 경로, 문자열: 모드) as 파일 객체:
    문장
cs

 



텍스트 읽기

파일을 읽을 때는 read() 함수를 사용합니다.

파일 객체.read()

 

텍스트 한 줄씩 읽기

텍스트를 사용해 데이터를 구조적으로 표현할 수 있는 방법으로 CSV, XML, JSON 등이 있습니다.

이중 CSV를 이용하여 간단하게 살펴보면 CSV는 Comma Separated Values의 줄임말로, 쉼표로 구분된 값들을 의미합니다.

이름, 키, 몸무게 -> 헤더
홍길동, 176, 68 -> 데이터
이몽룡, 186, 76 -> 데이터

위와 같은 텍스트 데이터를 한줄 씩 읽어 들여 처리 해보겠습니다.

 

 

4. 요약 키워드 정리

  • 호출 : 함수를 실행하는 행위
  • 매개변수 : 함수의 괄호 내부에 넣는 것을 의미
  • 리턴값 : 함수의 최종적인 결과를 의미
  • 가변 매개변수 : 함수는 매개변수를 원하는 만큼 받을 수 있는 함수
  • 기본 매개변수 : 매개변수에 아무것도 넣지 않아도 들어가는 값
  • 재귀 함수 : 내부에서 자기 자신을 호출하는 함수
  • 메모화 : 한 번 계산한 값을 저장해 놓은 후, 이후에 다시 계산하지 않고 저장된 값을 활용하는 테크닉
  • 조기 리턴 : 함수의 흐름 중간에 return 키워드를 사용해서 코드 들여쓰기를 줄이는 등의 효과를 가져오는 테크닉
  • 튜플 : 리스트와 비슷하지만, 요소를 수정할 수 없는 파이썬의 특별한 문법
  • 람다 : 함수를 짧게 쓸수 있는 파이썬의 특별한 문법
  • with 구문 : 블록을 벗어날 때 close() 함수를 자동으로 호출해주는 구문
  •  
728x90

'[기타] 스터디 > [혼공학습단 9기] 파이썬' 카테고리의 다른 글

파이썬 공부 (6)  (0) 2023.02.19
파이썬 공부 (5)  (0) 2023.02.11
파이썬 공부 (3)  (0) 2023.01.24
파이썬 공부 (2)  (0) 2023.01.13
파이썬 공부 (1)  (0) 2023.01.06