[TIL] scope

양희연·2020년 5월 28일
0

Python

목록 보기
5/10
post-thumbnail

scope는 파이썬에서 굉장히 중요한 개념이라고 생각된다.
이 개념을 제대로 이해하지 못한다면 원하는 결과값을 못 얻을 수도 있다.

중요한 개념인만큼 꼼꼼히 정리해보자! 📝



변수나 함수는 선언된 지점과 동일한 level의 지역, 그리고 더 안쪽의 지역들까지 범위가 유효하다.

💡 dir() 해당 객체가 어떤 변수와 메소드를 갖고 있는지 나열해준다.



local scope

local scope를 가지고 있는 변수나 함수 혹은 객체는 이름 그대로 특정 범위에서만 유효하다.

a = 10

def callNum():
    #함수 안에서 선언되었으므로 함수 안에서만 유효한 변수
    a = 20                
    print(a)

callNum()                 #20
print(a)                  #10



enclosed scope

중첩함수가 있을 때 적용되는 scope
부모 함수에서 선언된 변수는 중첩함수 안에서도 유효한 범위를 가지고 있다.

def outer():
    a = 10

    def inner():
        #부모함수에서 선언된 a 변수 사용가능하다.
        b = 20            
        print(a + b)
    inner()
    print(b)              #error 발생



global scope

선언된 지점이 해당 파일에서 가장 바깥쪽에서 선언되므로 전역변수라 한다.
해당 파일에서 선언된 지점 아래로는 다 유효한 범위를 가짐.

print(a)                   #error 발생

a = 10
print(a + 10)
#출력결과
#20



built-in scope

파이썬이 제공하는 함수 또는 속성들이 built-in scope를 가진다.
따로 선언 없이 모든 파이썬 파일에서 유효한 범위를 가진다.

numbers = list(range(1, 11))
print(len(numbers))
#출력결과
#10


💡 파이썬은 변수나 함수의 정의를 찾을 때 다음 순서의 scope 안에서 찾는다.
      🚗 local → enclosing → global → built-in


참고자료: 코딩도장

profile
꾸준히 나아가자!

0개의 댓글