[python] 같은 코드인데 함수 선언시 속도가 빠른 이유

lv2dev·2024년 8월 17일
0

Python 이것저것

목록 보기
2/7

나도 우연히 이런 상황을 겪어 인터넷에 검색해 보았더니 아래의 백준 링크를 찾을 있었다.

LEGB 룩업 규칙

  • 변수를 찾는 순서
  • Local (지역 스코프): 함수 내부에서 정의된 변수
def my_function():
    local_var = 10  # 지역 변수
    print(local_var)  # 출력: 10

my_function()
# print(local_var)  # 오류: local_var는 함수 외부에서 접근할 수 없음
  • Enclosing (중첩 스코프): 중첩 함수의 외부 함수에 정의된 변수
def outer_function():
    outer_var = "I'm from outer function"
    
    def inner_function():
        print(outer_var)  # 외부 함수 변수에 접근 가능
    
    inner_function()

outer_function()
  • Global Scope (전역 스코프): 모듈의 모든 함수에서 접근할 수 있는 변수
global_var = "I'm global"

def my_function():
    print(global_var)  # 전역 변수에 접근 가능

my_function()

def modify_global():
    global global_var  # 전역 변수를 수정하기 위해 global 키워드 사용
    global_var = "I've been modified"

modify_global()
print(global_var)  # 출력: "I've been modified"
  • Built-in-Scope (내장 스코프): 내장 스코프 파이썬이 기본적으로 제공하는 namespace
print(len([1, 2, 3]))  # 내장 함수 len() 사용

결론

  • 즉, 파이썬은 변수를 찾을 때 LEGB 규칙을 따르는데, 이 과정에서 함수로 선언된 경우는 지역 변수, 그냥 사용하는 경우는 전역 변수로 취급되기 때문에 함수 선언시 더 빠르게 실행되는 것이라는 것을 알 수 있다.
profile
언제나 레벨업을 하고 싶은 영원한 lv1

0개의 댓글