TIL48. ネスト機能とDecorator


Nested Function


スタイル

def parent_function():					# 1
    def child_function():				# 3
        print("this is a child function")		# 4
    child_function() 					# 2
print(parent_function())				# 5
出力値:「this a child function」
ネスト関数(nested function)または内部関数は、親親関数でのみ呼び出されます.
親関数を呼び出すことができません.

ネスト関数の使用方法


1.可読性

  • 関数のコードに重複するコードがある場合は、ネストされた関数として宣言されます.
    親関数のコードを効率的に管理し、可読性を向上させる
  • 2. Closure

  • セットの辞書は閉じることを意味します.
    Pythonで使われているclosureは、外部から隔離して使われているようです.

  • ネスト関数は、ネスト関数で親関数の変数または情報を使用します.

  • 親関数は、戻り値でネストされた関数を返します.

  • 親関数から返されるため、親関数の変数に直接アクセスできません.
    親関数は、返されるオーバーラップ関数で使用できます.
  • 次にネスト関数の例を挙げます.
    def generate_power(base_number):
        def nth_power(power):
            return base_number ** power
     
        return nth_power
     
    a = generate_power(2)		# a가 먼저 부모 def에 접근하고 2를 입력시킨다.
    a(7)				# 자식 def에 들어가 2**7을 성립시킨다.
    > 128
    a(10)
    > 1024
     
    b = generate_power(7)
    b(3)
    > 343
    b(5)
    > 16907

    Decorator


    Decoratorって何?

  • Decoratorには装飾や装飾の意味があります.
    Pythonは、関数を飾るためのツールとして記述することができます.
  • Decoratorはどのように使いますか?



    Decoratorの例

    def welcome_decorator(func):			# 4 def greeting()을 통째로 func에 대입
        def wrapper():				# 6 래퍼 정의
            return func() + "welcome to WECODE!"	# 7 func()와 문자열 합체
        return wrapper				# 5 래퍼를 반환시켜라
    
    @welcome_decorator				# 1
    def greeting():					# 2
        return "Hello, "				# 3
    
    print(greeting())				# 8
    結果の値は次のとおりです.
    Hello, welcome to WECODE! しゅつりょく