반응형
# 함수 정의 및 람다 사용
함수 선언 - 반복적인 기능 구현
함수의 다양한 사용
다양한 반환 값
*args, **kwargs
람다 함수
# 함수 정의 방법
# def 함수명(parameter) :
# code
# 함수 호출 - 호출하기 전에 먼저 선언해야 함
# 함수명(parameter)
# 예제1
def hello(world):
print("Hello ",world)
hello("Python!")
hello(7777)
# 예제2
def hello_return(world):
val = "Hello "+str(world)
return val
str = hello_return("Python!!!!!")
print(str)
# 예제3(다중리턴)
def func_mul(x):
y1 = x*100
y2 = x*200
y3 = x*300
return y1,y2,y3
val1,val2,val3 = func_mul(100)
print(type(val1),val1,val2,val3) # <class 'int'> 10000 20000 30000
# 예제4(데이터 타입 반환)
def func_mul2(x):
y1 = x*100
y2 = x*200
y3 = x*300
return [y1,y2,y3]
lt = func_mul2(100)
print(lt,type(lt))
# 예제5
#*args, *kwargs
# 매개변수 몇 개 넘어오는지 모를 때
def args_func(*args):
# for t in args:
# print(t)
for i,v in enumerate(args):
print(i,v)
args_func('kim')
args_func('kim','park')
args_func('kim','park','lee')
#kwargs
# * 튜플 ** 딕셔너리
def kwargs_func(**kwargs):
for k,v in kwargs.items():
print(k,v)
kwargs_func(name1 = 'Kim')
kwargs_func(name1 = 'Kim', name2 = 'Park',name3 = 'Lee')
# 전체 혼합
def example_mul(arg1,arg2,*args,**kwargs): # arg1,arg2 필수 뒤는 가변
print(arg1,arg2,args,kwargs)
example_mul(10,20) # 10 20 () {}
example_mul(10,20,'park','kim',age1 = 24, age2 = 35) # 10 20 ('park', 'kim') {'age1': 24, 'age2': 35}
# 예제 6
# 중첩함수(클로저)
def nested_func(num):
def func_in_func(num):
print(num)
print("in func")
func_in_func(num+10000)
nested_func(10000)
# 예제7 (hint) - 입력, 출력값
def func_mul3(x:int) -> list :
y1 = x*100
y2 = x*200
y3 = x*300
return [y1,y2,y3]
print(func_mul3(5))
# 람다식 예제
# 람다식 : 메모리 절약, 가독성 향상, 코드 간결
# 함수는 객체 생성 -> 리소스(메모리) 할당
# 람다는 즉시 실행(Heap 초기화) -> 메모리 초기화
# 일반적 함수 -> 변수 할당
def mul_10(num : int) -> int:
return num * 10
var_func = mul_10
print(var_func)
print(type(var_func))
print(var_func(10))
#lambda
lambda_mul_10 = lambda num : num*10
print('>>>',lambda_mul_10(10))
def func_final(x,y,func):
print(x*y*func(10))
func_final(10,10,lambda_mul_10)
func_final(10,10,lambda x:x*100)
반응형
'Algorithm > 자료구조, 알고리즘' 카테고리의 다른 글
[코딩 + 알고리즘 완주반] 7일차. 상속, 다중상속 (0) | 2021.03.21 |
---|---|
[코딩 + 알고리즘 완주반] 6일차. self, 클래스 변수, 인스턴스 변수 (0) | 2021.03.20 |
[코딩 + 알고리즘 완주반] 5일차. 조건문, 반복문,List Comprehension, QUIZ (0) | 2021.03.19 |
[코딩 + 알고리즘 완주반] 4일차. 딕셔너리, 집합, 데이터타입 퀴즈 (0) | 2021.03.18 |
[코딩 + 알고리즘 완주반] 3일차. 데이터타입, 숫자형, 문자형 및 연산자, 리스트, 튜플 (0) | 2021.03.17 |