[Python]Nested Function



📌 ネスト機能

  • 関数内の関数、すなわち、関数内に宣言関数を重畳することができる.
  • ネストされた関数は、親関数でのみ呼び出され、親関数呼び出しから離れることはできません.
  • # child_function은 parent_function 안에서만 호출이 가능함.
    def parents_function():
        def child_function():
            print("child function 이라고,,")
    
        child_function()
    
    
    parents_function()

    -ネスト関数を使用する理由


    どくせい

  • 関数を使用する理由は、コードを効率的に管理し、可読性を向上させるために、重複するコードを関数として定義するためである.
    同様に、ネスト関数を使用する理由も同様であり、関数内のコードの重複するコードをネスト関数として宣言すると、親関数のコードを効率的に管理し、可読性を向上させることができる.
  • def print_all_elements(list_of_things): # 부모 함수
        def print_each_element(things): # 중첩 함수
            for thing in things:
                print(thing)
        
        if len(list_of_things) > 0:
            print_each_element(list_of_things)
        else:
            print("없어요")
    
    print_all_elements([1,2,3,4,4])
    

    Closure

  • 重畳関数親関数を使用する変数または情報をclosureと呼ぶ.また、親関数はオーバーラップ関数を書き換えます.つまり、親関数から返されるため、親関数の変数は直接アクセスできませんが、親関数から返されるオーバーラップ関数で使用できます.
  • エンクロージャは、任意の情報に基づいて演算を実行することを望んでいるが、ベースの情報は、露出または変更を防止するためにアクセスを制限する必要がある.
  • 州においてfactory 패턴が実施する場合に用いる(あるパターンを生成する)
  • .
    たとえば、
    # 특정 숫자의 승을 구하는 함수를 구현한다면?
    
    def calculate_poser_of_two(power):
        return 2 ** power
    
    print(calculate_poser_of_two(7))
    print(calculate_poser_of_two(5))
    しかし、上の関数は2乗しか求められません.特定の数字の乗算を求める関数が必要な場合、2ではなく任意の数の乗算を求める関数をどのように実現しますか?この場合、closure関数を使用できます.
    # 특정 숫자의 승을 구하는 함수를 구현한다면?
    
    def generate_power(base_number):
        def nth_power(power):
            return base_number ** power
    
    
        return nth_power
    
    num = generate_power(5)
    print(num(2))
    
    #25
    勘定科目の親勘定科目の変数2479142は、オーバーレイ関数では独立して使用されます(=closure).次に、オーバーラップ関数が親関数の戻り値を返すことを確認します.