오늘은 유효범위에 대해 알아보자.
영어로는 scope이라고 부른다.
영영사전에서 scope의 의미를 살펴보자.
- the extent of the area or subject matter that something deals with or to which it is relevant.
> 지역이나 주제에 대한 규모나 범위를 뜻함.
파이썬에서 scope는 어떤 의미일까?
파이썬에서 scope은
두 가지가 있다.
전역 범위,
지역 범위
우리집 마당에 연못이 있다.
이 연못에 있는 물고기를 잡을 수 있는 사람은 우리집 가족들 뿐이다.
파이썬의 scope 유효 범위에 비춰 생각해보면,
우리집 연못은 <지역 범위, local scope>에 해당한다.
그리고 우리 마을에도 연못이 있다.
이 연못에 있는 물고기를 잡을 수 있는 사람은 우리집 가족 뿐만 아니라, 이웃인 토니네집, 제니네집도 될 수 있다.
파이썬의 scope 유효 범위에서
마을의 연못은 <전역 범위, global scope>에 해당한다.
코드를 보자.
해당 코드에서 my_pond()라는 함수가 있다.
이 함수 안에 fish 변수를 만들었다.
이 변수는 함수 안에서만 쓸 수 있다.
이 함수 안에 있는 fish 변수는 <지역 범위, local scope>에 속한다.
fish 변수를 지역 변수 local variable 이라고 부른다.
반면 my_pond()함수 위(바깥)에
fish 변수가 만들어졌다.
이 변수는 함수 안에서도, 밖에서도 쓸 수 있다.
함수 밖에 있는 fish 변수는 <전역 범위, global scope>에 속한다.
fish 변수는 전역 변수 global variable이라고 부른다.
결국 지역범위와 전역범위의 차이점은?
1. 정의한 장소, 만든 장소
2. 사용 범위
이번에는 우리집 바깥, 즉 우리 마을(전역범위=global scope)에 연못 말고, 나무 한그루(전역변수=global variable)를 더 만들었다.
tree는 my_pond() 함수 밖에서 정의되었기 때문에 전역 범위에 속하는 것이다.
<<<<----- 1번: 정의한 장소, 만든 장소
전역 범위는 함수 내부, 외부 어디서든 사용할 수 있다.
<<<< -----2번: 사용범위
전역 함수
이제까지는 전역 범위, 지역 범위에 관해 이야기했는데,
전역 Global, 지역 Local 범위 Scope의 개념은
변수에만 한정하여 적용되지는 않는다.
지금부터는 함수에 대해 이야기해보자.
함수 역시 scope 범위를 가질 수 있다.
아래의 my_house() 안에는
my_ponds()와 my_ tree()함수가
2단계로 중첩되어 만들어졌다.
my_ponds()와 my_ tree()함수는
my_house 안에서만 사용이 가능한 지역 함수라고 말한다.
만약 함수 외부에서 my_ponds를 호출하면 NameError가 뜬다.
name 'my_ponds' is not defined
따라서,
함수나 변수 등 원하는 모든 대상에 이름을 지정할 때마다
그것을 만든 곳을 잘 알고 있어야 한다!!
if절, while문, for문은 지역 범위를 만들지 않는다.
참고로, if절이나 while문, for문을 작성할 때
다음 줄을 들여쓰기해서 작성하는데,
이때 새로운 변수를 선언한다고 하더라도,
여기서는 지역 범위를 만드는 것으로 간주하지 않는다.
'파이썬 > 파이썬(python) 초급' 카테고리의 다른 글
[12-3 파이썬] 숫자 맞추기 게임 만들기(순서도, 코드, global 전역변수 실습하기, 전역변수 수정하기) (0) | 2022.08.21 |
---|---|
[12-2 파이썬] 전역 변수 수정하기, global, 전역 상수 (0) | 2022.08.20 |
[11-2 파이썬] 블랙잭 게임 만들기(순서도, 알고리즘) (0) | 2022.08.20 |
[11-1 파이썬] 블랙잭 게임 만들기(블랙잭 게임 규칙 알기) (0) | 2022.08.19 |
[10-6 파이썬] 계산기 만들기 1단계(딕셔너리에 함수 넣기) (3) | 2022.08.19 |