본문 바로가기
멋쟁이사자처럼 AI스쿨

함수3(파이썬 강의 Day3)

by 헬푸밍 2023. 1. 4.

함수

def, return, argument, parameter, docstring, scope, lambda

반복적으로 사용되는 코드를 묶어서 사용하는 방법

=> 코드의 유지보수가 쉬워진다.

 

사용법 : 함수선언(코드작성)  -> 함수호출(코드실행)

 

- lambda

간단한 함수를 함수 선언 없이 사용 가능

코드의 가독성이 좋아진다.

lambda 파라미터: 리턴값

의 형식으로 사용한다.

 

아래와 같은 코드를 보자!

# 변수 3개 선언 : plus, minus, calc : 저장공간 3칸
def plus(n1, n2):
    return n1 + n2

def minus(n1, n2):
    return n1-n2

def calc(func, n1, n2):
    return func(n1, n2)

calc(plus, 1, 2), calc(minus, 1, 2)

덧셈, 뺄셈 함수를 계산 함수에 넣어 계산하는 함수이다.

함수 3개를 선언했기때문에 저장공간이 3칸이나 된다.

 

lambda 함수를 사용해 보면...

def calc(func, n1, n2):
    return func(n1, n2)

calc(lambda n1, n2: n1 + n2, 1, 2), calc(lambda n1, n2: n1 - n2, 1, 2)

이렇게 저장공간을 1칸 사용하며 짧은라인으로 가독성이 좋아진다.

결과는 두 코드 모드 동일하다!

 

- list comprehension

간단한 반복문, 조건문을 사용해서 리스트 데이터를 만들때 사용하는 문법

주로 리스트 데이터를 필터링하거나 데이터를 변경할때 사용한다.

 

아래는 0~9까지의 숫자 중에서 홀수만 뽑아 제곱한 결과를 리스트로 출력하는 코드이다.

result = []
for number in range(10):
    if number % 2:
        result.append(number ** 2)
result

결과가 이렇게 잘 나오지만...

 

list comprehension을 사용하면 간단하게 한줄로 코드를 작성할 수 있다.

result = [number ** 2 for number in range(10) if number % 2]
result

같은 결과지만 훨씬 보기 편하다!

 

dictionary comprehension은 list를 dict 형식으로만 바꿔주면 된다.

 

아래는 2020년 보고서만 딕셔너리 형태로 뽑아주는 코드이다.

reports = ['사업보고서(2020)', '감사보고서(2021)', '[기재정정]사업보고서(2020)']
reports_2020 = {report[:-6] : report[-5:-1] for report in reports if report[-5:-1] == '2020'}
reports_2020

출력 결과는 아래와 같다.

 

- map()

iterable한 데이터의 모든 value에 특정 함수를 적용한 결과를 리스트로 출력

 

아래는 연령을 연령대로 바꿔주는 코드이다.

names = ['kim python(23)', 'lee notebook(32)', 'kim macbook(47)']

def ages(data):
    return data[:-3] + str(int(data[-3:-1]) // 10 * 10) + ')'

list(map(ages, names))

map함수를 통해 리스트의 모든 value에 함수를 적용시켜서...

다음과 같이 출력된다!


오늘은 이렇게 함수에 대해 알아보았습니다...

 

함수는 복잡하군요...

 

그럼 저는 강사님이 내주신 quiz를 풀러 가보겠습니다!!!

 

댓글