자격증 & 언어/Python

Python 사용자 정의 함수

코린이살려 2021. 12. 15. 17:26
# -*- coding: utf-8 -*-
"""
Created on Wed Dec 15 15:23:00 2021

@author: rkdtk
"""

# 사용자 정의 함수
# 사용자가 정의하는 함수의 형태
# input과 output 관계를 내부에 정의
# def, lamda(축약형)

# 함수 정의
# f(x) = x + 1

# 1. def 방식

# def 함수이름(인수1, 인수2, 인수3):
#     함수 본문
#     return 반환할 객체

# 숫자를 넣어서 곱하기 10을 반환

def f_mul(x):
    v1 = x*10
    return v1

f_mul(100)

# 두 숫자(두개의 인자를 넣구나!) 넣어서 두 숫자의 곱 반환

def f2_mul(x,y):
    v1 = x*y
    return v1

print(f2_mul(2, 10))

# 인수에 default 값 기본값 선언

def f_d(x,y=10):
    return x*y

f_d(10)
# 첫번째 인수에 기본값을 정의하면, 뒤에 나오는 인수도 기본값 정의해야 함
# default 값을 갖는 인수를 맨 뒤에 배치
#SyntaxError: non-default argument follows default argument

# lambda 축양형
# 비교적 단순한 연산 및 리턴시 사용
# 수학의 치환해서 방정식을 푸는 것 처럼 일회용으로 치환하여 간단한 리턴시 사용한다.

# 예제 : 숫자를 넣을거예요, 여기에 10을 곱한 값을 리턴하세요
f1 = lambda x:x*10
f1(5)
f1(6)


# 문제
# 3개 숫자를 전달 받아 첫 번째와 두번째  합에 서번째 숫자의 곱 리턴
f2 = lambda x,y,z : (x+y)*z
f2(2,5,3)

# map 함수
f1 = lambda x: x*10
f1(4)

l1 = [1,2,5,10] 
f1(l1) # 리스트가 10번 반복

# 1) for 문 처리
l2 = []
for i in l1:
    l2.append(i*10)
print(l2)

# 2) 사용자 정의 함수 + map

# map(func,       # 적용될 함수
#     iterable)   # 추가할 함수

f1(4)
l1
list(map(f1,l1)) # 순환 가능한? 이터러블한 객체를 한번에 함수에 적용

# 연습해 볼까요?
# 하나의 숫자를 전달받아서 10보다 크면 3을 곱하고 작거나 같으면 2를 곱한 결과를 리턴하세요

l2 = [3,5,7,10]

def f3(x):
    if x >10:
        v1 = x*3
    else:
        v1 = x*2
    return v1

list(map(f3,l2))

코테 준비를 하면서 lambda 함수를 여러번 써봤지만 좀더 잘 이해하게 되었고 map함수도 잘 이해하게 되었다.