Python Decorator(2)
装飾を理解するためのFirst-class関数
既存の叙述内容と重複可能
First-class関数はで使用される関数をFisrt-class関数と呼びます 関数自体は、変数に格納することができる .関数のパラメータに他の関数 を渡すことができる.関数の戻り値(戻り値)は、関数 を伝達するために使用される.
PythonとFirst-class関数 Pythonは、すべてのコンテンツを対象としています. (関数、クラス、変数、配列など)
したがって、は、関数機能の他に、オブジェクトのように使用することができる Pythonのすべての関数は、 を意味する第1のクラスの関数として使用できます.
💡 すべての言語でFirst-class関数がサポートされているわけではありません.Python、Go、JavaScript、Kotlinなどの最新言語で開発された関数式プログラミング技術.
First-class関数の例関数自体は、変数に格納することができる .関数のパラメータに他の関数 を渡すことができる.関数の戻り値(戻り値)は、関数 を伝達するために使用される.
既存の叙述内容と重複可能
First-class関数は
PythonとFirst-class関数
したがって、
💡 すべての言語でFirst-class関数がサポートされているわけではありません.Python、Go、JavaScript、Kotlinなどの最新言語で開発された関数式プログラミング技術.
First-class関数の例
def outer_func(num):
# 중첩 함수에서 상위 함수의 변수에 접근 가능
def inner_func():
print(num)
return 'complex'
return inner_func
fn = outer_func(10) # <--- First-class function
print(fn()) # <--- Closure 호출
First-class関数の例def calc_square(digit):
return digit * digit
a = calc_square
print(a)
""" 결과 : function calc_square at 0x7fc5080c4f70
즉, a 라는 변수에 함수가 할당되어 있는 것을 볼 수 있음. """
print(a(2))
""" 결과 : 4
a 에 할당된 calc_square 함수의 인자로 2가 전달되어 값은 4를 리턴함. """
def calc_square(digit):
return digit * digit
def list_square(function, digit_list):
result = []
for digit in digit_list:
result.append(function(digit))
print (result)
num_list = [1, 2, 3, 4, 5]
list_square(calc_square, num_list)
""" 결과 : [1, 4, 9, 16, 25]
calc_square 함수가 list_square 함수의 인자로 전달되어 result 배열에 값 추가. """
def logger(msg):
message = msg
def msg_creator(): # <--- 함수 안에 함수를 만들 수도 있음
print ('[HIGH LEVEL]: ', message)
return msg_creator
log1 = logger('Dave Log-in')
print(log1)
""" 결과 : <function logger.<locals>.msg_creator at 0x7f85180889d0>
log1 에는 리턴된 msg_creator 함수가 들어 있음.(즉, 함수 호출이 아니라 함수가 담겨 있음.)"""
log1()
""" 결과 : [HIGH LEVEL]: Dave Log-in
msg_creator 함수가 호출되어 위와 같은 결과를 리턴함. """
Reference
この問題について(Python Decorator(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@tkjung/파이썬-데코레이터2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol