나의 작은 valley

[python] 일급함수, 내적함수, 데코레이터 본문

Computer Science/[Python] 문법 정리

[python] 일급함수, 내적함수, 데코레이터

붕옥 아이젠 2023. 1. 30. 07:35
728x90

o) 일급합수(First-class objects) 

: 변수에 할당이 가능한 객체

>> 파라미터로 쓰이거나 리턴 값으로 쓰일 수 있다.

 

i.e) map(func, ex), func라는 함수라 map 함수의 파라미터로 쓰였다.

 

 

 

o) 내적함수 (inner function)

: 함수 내에 또 다른 함수가 존재함.

 

use_1) 함수 안에서 함수를 호출

def print_msg(msg): 
	def printer():
    	print(msg)
    printer()
    
print_msg("후에엥")
#print_msg 호출 >> printer 호출 >> print(msg) 실행 >> 후에엥 출력

 

use_2) 함수의 반환값으로 함수를 사용

def print_msg(msg):
	def printer():
    	print(msg)
    return printer

new_msg = print_msg("내가 네게")
new_msg() 
#입력값과 상관없이 정해진 msg가 print됨.

cf) 반환값으로 함수를 사용하는 걸 closures 라고 한다. 

 

 

 

o) 데코레이터 (decorator function)

def star(func):
	def inner(*args, **kwargs):
    	print("*"*3)
        func(*args, **kwargs)
        print("*"*3)
    return inner

@star
def printer(msg):
	print(msg)
    
printer("Hello")
>> step 1) printer라는 함수가 star의 매개변수로 들어간다.
>> step 2) star는 함수를 반환하고 inner가 실행됨
출력: 
***
Hello
***

 

728x90
Comments