[TIL_Python]54. scope

HYEYOON·2021년 1월 16일
0
post-thumbnail

scope

:어떠한 객체(변수,함수)가 유효한 범위를 말한다.
범위를 벗어나면 해당 객체를 사용될 수 없다.
파이썬에서 scope는 항상 객체가 선언된 지점에서 위로는 상위 객체까지, 아래로는 모든 하위 객체들과 그 안에까지 범위이다.

📕범위

Local Scope이 가장 범위가 제한적이고 built-in scope이 가장 범위가 광범위하다.

  • Local Scope
    -local scope를 가지고 있는 변수나 함수 혹은 객체는 이름 그대로 특정 범위에서만 유효하다.
    -주로 함수 안에서 선언된 변수나 함수가 로컬 스코프를 갖고있다.

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

  • Global Scope
    -함수 안에서 선언된 것이 아닌 함수 밖에서 선언된 변수나 함수를 말한다.
    -글로벌 스코프를 가지고 있는 변수와 함수들은 선언된 지점이 해당 파일에서 가장 바깥쪽에서 선언되므로 해당 파일에서 선언된 지점 아래로는 다 유효한 범위를 갖는다. 그래서 글로봘~~

  • Built-in Scope
    -가장 광범위한 scope
    -파이썬에 내장되어있는, 파이썬이 제공하는 함수 또는 속성들이 built-in-scope를 가지고 있다.
    -따로 선언이 없어도 모든 파이썬 파일에서 유효한 범위를 갖는다.
    -예를 들어, list등과 같은 자료구조의 element 총 개수를 리턴하는 len함수가 built-in-scope를 가지고 있다.


Shadowing

파이썬은 변수나 함수의 정의를 찾을 때의 순서
Local => Enclosing => Global => Built-in
만일 동일한 이름의 변수들이 서로 다른 scope에서 선언이 되면 더 좁은 범위에 있는 변수(혹은 함수)가 더 넓은 범위에 있는 변수를 가리는 (shadowing)효과가 나타난다.

문제

왼쪽 상단에 코드를 수정하셔서 scope_test 함수에 parameter 값에 상관 없이 무조건 63이 리턴되도록 수정해주세요.
예를 들어 다음과 같이 되어야 합니다.

scope_test(10) == 63
scope_test(20) == 63
scope_test(333) == 63

나의 답:

what_is_my_scope = 7
def scope_test(what_is_my_scope):
    some_number = 9
    what_is_my_scope =7
    def inner_scope_test(what_is_my_scope):
        return some_number * what_is_my_scope  
    return inner_scope_test(what_is_my_scope)
profile
Back-End Developer🌱

0개의 댓글

관련 채용 정보