Python

Python, 함수_스코핑룰

hwangyoungjae 2016. 4. 21. 20:03

함수 내부의 이름공간 : 지역 영역(Local scope)

함수 밖의 영역 : 전역 영역(Global scope)

파이썬 자체에서 정의한 영역 : 내장 영역(Built-in scope)

 

>>> x =1

>>> def func(a):

             return a + x #Local scope에 해당 이름이 없음, Global scope에서 같은 이름을 찾아서 사용

>>> func(1)

2

 

>>> def func2(a):

             x = 2 #Local scope x라는 이름 등록

             return a + x #Local scope x를 사용

>>> func2(1)

3

 

 

-. 이름검색규칙(‘LGB 규칙’)

Local -> Global -> Built-in 의 순서대로 검색

 

 

-. Local에서 Global 변수 사용방법

>>> g = 1

>>> def ts(a):

             global g

             g = 2

             return g + a

>>> ts(1)

3

 

 

-. global의 사용방법

>>> del g

>>> def tg(a):

             global g

             return g + a

>>> tg(1)

Traceback (most recent call last):

  File "<pyshell#128>", line 1, in <module>

    tg(1)

  File "<pyshell#127>", line 3, in tg

    return g + a

NameError: global name 'g' is not defined

>>> g = 2

>>> tg(1)

3

global Global의 변수를 Local로 참조만 시킴(Loal에서 Global 변수생성 불가)

Global에 해당 변수가 없으면 오류 발생해당 변수를 Global에서 선언해주면 해결