혼공파 | 05. 함수

yeonk·2021년 9월 22일
0

python

목록 보기
5/23
post-thumbnail

1. 함수

함수를 사용한다 = 함수를 호출한다
매개변수: 함수를 호출할 때 괄호 내부에 넣는 자료
리턴값: 함수를 호출해서 최종적으로 나오는 결과



# 기본 형태
def 함수 이름():
	코드

# 함수와 매개변수
def 함수 이름(매개변수):
	코드






매개변수

가변 매개변수

매개변수를 원하는 만큼 받을 수 잇다.

  • 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다.

  • 가변 매개변수는 하나만 사용할 수 있다.



def 함수명(매개변수, 매개변수, 가변 *매개변수):
	코드






기본 매개변수

매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본 값

  • 기본 매개변수 뒤에는 일반 매개변수가 올 수 없음
함수명(매개변수 = 기본값, 매개변수2 =  기본값2)






키워드 매개변수

매개변수 이름을 지정해서 입력하는 매개변수
자주 사용하는 end도 키워드 매개변수이다.






return value

함수의 결과값.
함수를 실행했던 위치로 돌아가라는 뜻.
return 키워드를 만나는 순간 함수 종료

조기리턴: 흐름 중간에 return 키워드를 사용하는 것






2. 재귀함수

자기자신을 호출하는 함수

  • 재귀함수는 상황에 따라서 같은 것을 기하 급수적으로 많이 반복한다는 문제가 있다.
  • 이를 해결하기 위한 방법으로 메모화(memoization)가 있다.






메모화

같은 값은 한번만 계산하도록 코드를 수정하는 것

메모(memo): 딕셔너리를 사용해서 한 번 계산한 값을 저장






참조

파이썬은 내부에서 외부에 있는 변수를 참조하지 못함.

  • global 키워드
    • 파이썬 프로그램에만 있는 구조
    • 함수 내부에서 함수 외부에 있는 변수라는 것을 설명
global 변수 이름 






3. 함수 활용

튜플과 람다

튜플(tuple): 리스트와 비슷한 자료형으로, 한번 결정된 요소는 바꿀 수 없다.
함수와 함께 많이 사용된다.

# 기본 형태
(data1, data2, data3, ...)

# 요소 1개 튜플
(data, )

람다(lambda): 함수를 간단하고 쉽게 선언하는 방법

# 기본 형태
lambda 매개변수: 리턴값

# 예시
power = lambda x: x * x



표준 함수

map(): 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성

map(함수, 리스트)

filter(): 리스트의 요소를 함수에 넣고 리턴된 값이 true인 것으로 새로운 리스트를 구성

filter(함수, 리스트)






파일처리

open(): 파일 열기

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



close(): 파일 닫기

파일 객체.close()



with 키워드: open()으로 파일을 열면 close()로 닫아줘야한다.
하지만 닫지 않는 실수가 생기기 때문에 with라는 키워드를 사용.
with 구문이 종료될 때 자동으로 파일이 닫힌다.

with open(문자열: 파일경로, 문자열: 모드) as 파일객체:
	문장



읽기모드

w: write 모드(새로 쓰기)

a: append 모드(뒤에 이어서 쓰기 모드)

r: read 모드(읽기 모드)



CSV(Comma Separated Values)

쉼표로 구분된 데이터

  • 한 줄에 하나의 데이터를 나타내고 각 줄은 쉼표를 사용해 데이터를 구분



파일 한 줄에 나타내기

for 한 줄을 나타내는 문자열 in 파일 객체:
	처리






제너레이터(generator)

파이썬의 특수한 문법 구조.
이터레이터를 직접 만들 때 사용하는 코드.
yield 키워드 사용.
함수를 호출해도 함수 내부의 코드가 실행되지 않음
함수의 코드를 조금씩 실행할 때 사용(메모리 효율성)

  • 제너레이터 객체는 next() 함수를 사용해서 함수 내부의 코드를 실행

  • yield 키워드 부분까지만 실행

  • next() 함수 리턴 값으로 yield 키워드 뒤에 입력한 값이 출력






참고

stack overflow: 프로그래밍의 다양한 주제에 대한 질문 답변 사이트






reference

윤인성, 『혼자 공부하는 파이썬』, 한빛미디어

0개의 댓글