함수의 중첩

def outer_function(outer_arg):
    # 외부 함수

    def inner_function(inner_arg):
        # 내부 함수 - 스코프가 외부함수 내로 제한됨
        return inner_arg * 2

    return inner_function(outer_arg)

result_1 = outer_function(5)
# result_2 = inner_function(5) # ⚠️ 오류

pass

스코프 scope

def outer_function():
    in_outer = 1

    def inner_function():
        in_inner = 2
        print(in_outer)
        print(in_inner)

    inner_function()

    print(in_outer)
    # print(in_inner) # ⚠️

outer_function()

# print(in_outer) # ⚠️
# print(in_inner) # ⚠️

Untitled

💡 for 문의 경우는 스코프 적용이 다름

for i in range(3):
    for j in range(3):
        print(f"안쪽 {i} {j}")
    print(f"중간 {i} {j}")

print(f"바깥 {i} {j}")

<aside> ❓ 아래의 파이썬 코드에서 함수와는 달리 스코프 관련 오류가 발생하지 않는 이유가 뭐야?

</aside>

쉐도잉 shadowing

def outer_scope():
    king = "사자"
    lord = "늑대"
    print(f"바깥: {king} {lord}")

    def middle_scope():
        king = "여우"
        print(f"중간: {king} {lord}")

        def inner_scope():
            king = "고양이"
            lord = "쥐"
            print(f"안쪽: {king} {lord}")

        inner_scope()
    middle_scope()

            
outer_scope()

📌 추가사항