티스토리 뷰

*args

- 매개변수가 몇 개가 넘어갈지 모를 때, 가변 매개변수

- 파라미터에 몇 개를 넣어도 tuple 형태로 받아온다.

 

enumerate

- 인덱스를 달아준다.

- 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴

 

**kwargs

- 키워드 인자 keyword arguments

- *일 때에는 튜플로 받고, ** 일 때에는 딕셔너리로 받음

 

 혼합 형태

# arg1, arg2 : 반드시 있어야하는 파라미터

# *args, **kwargs : 가변인자

def example_mul(arg1, arg2, *args, **kwargs):

    print(arg1, arg2, args, kwargs)

example_mul(1, 2, 3, 4, 5, 6, 7, age1= 24, age2=34)

 

type hint

- 가독성을 위한 것... 처음 보는 사람도 이것을 보고 int로 입력하고 list로 출력해야하는 것을 알 수 있게 한다.

- 협업이나 라이브러리 제작할 때에 좋다.

- integer를 입력받아서 list로 반환한다. 라는 것을 알려줌

def func_mul2(x : int) -> list:

    y1 = x * 100

    y2 = x * 200

    y3 = x * 300

    return [y1, y2, y3]

resultt = func_mul2(10)

print(resultt, type(resultt))



람다식

- 메모리 절약, 코드 간결, 가독성 향상

- 함수는 객체 생성 -> 메모리 할당

- 람다는 즉시 실행. (heap 초기화) -> 메모리 초기화

- 하지만 너무 람다식만 사용하게 되면 오히려 가독성이 떨어질 수 있다.

- 함수가 필요한 것은 함수로 있어야한다.

 

일반적 함수 -> 변수 할당

함수는 객체가 생성되었고, 메모리가 할당됨. 아직 함수를 사용하지는 않았지만, 메모리를 점유하고 있다.

 

def mul_10(num : int) -> int :

    return num*10

var_func = mul_10

print(var_func, type(var_func))

print(var_func(10), type(var_func(10)))

 

lambda_mul_10 = lambda x : x*10

print(lambda_mul_10, type(lambda_mul_10))

print(lambda_mul_10(10), type(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*10)

댓글