Backend/Python

파이썬 함수 - functions(1)

meong_j 2021. 9. 16. 19:23
728x90
반응형

 

파이썬 함수식 정의
# 파이썬 함수 및 중요성
# 파이썬 함수식 및 람다(lambda)

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


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

word = "Goodboy"

first_func(word)

print(first_func)

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

x = return_func('Goodboy2')
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, list(q))


# 리스트 리턴

def func_mul3(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return [y1,y2,y3]

q = func_mul3(20)

print(type(q),q, set(q))



# 딕셔너리 리턴

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

d = func_mul4(30)

print(type(d),d, d.get('v1'), d.items(), d.keys())

print()

 

 

 

 

 

 

*args , **kwargs 매개변수 명 지정
#중요
# *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')
args_func('Lee', 'Park', 'Kim') # 함수 유연하게 사, 가변인자 사용가능


print()
# **kwargs(언팩킹)
def kwargs_func(**kwargs): #매개변수 명 자유
    for v in kwargs.keys():
        print("{}".format(v), kwargs[v])
    print('------------')


kwargs_func(name1='Lee') # 키 - 값으로 전달( 좀 더 정확하게 사용 )
kwargs_func(name1='Lee',name2='Part')
kwargs_func(name1='Lee',name2='Part',name3='Cho')

print()
#전체 혼합
def example(args_1, args_2, *args, **kwargs):
    print(args_1, args_2, args, kwargs)


example(10,20,'Lee', 'Park', 'Kim', age1=20, age2=30, age3=40 )

print()
#####################

#중첩함수
def nested_func(num):
    def func_in_func(num):
        print(num)
    print("In func")
    func_in_func(num+100)

nested_func(100)
 #함수 안 함수 실행시 에러발생 ,  실행불가
#func_in_func(1000)


print()

 

 

 

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

# def mul_func(x,y):
#     retun x * y
#

# lamba x, y:x*y

# 일반적 함수 -> 할당
def mul_func(x,y):
     return x * y


print(mul_func(10, 50))

mul_func_var = mul_func
print(mul_func_var(20,50))

print()

#람다 함수 -> 할당
lambda_mul_func = lambda x,y:x*y

print(lambda_mul_func(50,50))


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

func_final(10,20, lambda_mul_func) # 람다식 바로 출력 가능

 

반응형