출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]
# Chapter05_01
# 파이썬 함수(Function)
# 파이썬 함수식 및 람다

# 함수 정의방법
# def function_name(parameter):
#   code

# 예제1)
def first_func(w):
    print("Hello,", w)

word = "Good boy"
first_func(word)



# 예제2
def return_func(w):
    result = "Hello," + str(w)
    return result

x = return_func('goodgirl')
print(x)


# 예제3 (다중반환)

def func_mul(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return y1, y2, y3  # 이런 리턴도 가능!

x, y, z =  func_mul(10)
print(x, y ,z)


# 튜플리턴
def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return (y1, y2, y3) #팩킹해서 튜플로!

q = func_mul2(20)
print(type(q), q)

# 리스트리턴
def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return [y1, y2, y3]

p = func_mul2(30)
print(type(p), p)

def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return {'v1' : y1 , 'v2' : y2 , 'v3' :y3}

d = func_mul2(40)
print(type(d), d, d.items(), d.keys())



# 증요
# *args, **kwargs

# *args(언팩킹)
# *뒤에 단어는 아무거나 가능, 여러개 받기 가능. 튜플에자주사용.

def args_func(*args) :
    for i, v in enumerate(args) :
        print('Result : {}'.format(i), v)
    print('--------')

args_func('Lee')
args_func('Lee','Park','Jin')

# **kwargs
# 딕셔너리로 이해.
def kwargs_func(**kwa) :
    for v in kwa.keys():
        print("{}".format(v), kwa[v])
    print('--------')

kwargs_func(name1='Lee')
kwargs_func(name1='Lee', name2='Park', name3='Jin')

# 전체 혼합
def example(args_1, args_2, *args, **kwargs):
    print(args_1, args_2, args, kwargs)
example(10, 20, 'Lee', 'Kim', 'Park', age1=20, age2=30, age3=40)


# 중첩함수
# 함수안의 함수는 바깥에서 사용 불가.
def nested_func(num):
    def func_in_func(num):
        print(num) #2
    print("In func") #1
    func_in_func(num+100) #2

nested_func(100)


# 람다식 예제
# 메모리 절약, 가독성 향상, 코드 간결
# 함수는 객체 생성 > 리소스(메모리) 할당
# 람다는 즉시 실행 함수 (heap초기화) > 메모리 heap초기화
# 남발 시 가독성이 오히려 감소.

def mul_func(x,y):
    return x*y

lambda x, y : x*y

a = lambda x, y : x*y
print(a(5,6))

def mul2_func(x,y):
    return x*y
###############################
# 일반적 함수 > 변수 할당.
q = mul2_func(10,50)
print(q)
print(mul2_func(10,50))
mul2_func_var = mul_func
print(mul2_func_var(20,50))

# 간단한 것은 람다식으로 사용하는 것이 편함.
lamdbd_mul2_func = lambda x,y:x*y
print(lamdbd_mul2_func(50,50))

def func_final(x, y, func):
    print('>>>>', x * y * func(100,100))

func_final(10,20, mul2_func_var)
func_final(10,20, lambda x,y:x*y) #이름이 없기에 즉시실행!

'python_basic' 카테고리의 다른 글

[파이썬] 모듈  (0) 2020.11.23
[파이썬] 클래스  (0) 2020.11.23
[파이썬] 사용자로부터 입력받기 / input  (0) 2020.11.23
[파이썬] while문 / while-else  (0) 2020.11.21
[파이썬] for문 / for-else / reversed / range  (0) 2020.11.21
[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21

+ Recent posts