본문 바로가기
Python/개념

Day 6-1. 변수의 범위

by 사라리24 2024. 3. 15.
SMALL

1. 변수의 범위 : 스코프(scope)

파이썬에서   함수, if문, for문 안에서 만들어진 변수는 밖에서 사용되지 않습니다. 그래서 변수의 범위(scope)가 중요합니다.
 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 
파이썬의 변수 범위는 크게 네 가지로 분류됩니다.

 

 

 

1. 지역(Local) 변수

Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.

 
 
  def local_example():
      local_var = "로컬 변수"
      print(local_var)

  local_example()
 
 
로컬 변수

 


  print
(local_var)
 
 
 오류

ㄴ 블록이 끝나면 변수가 사라집니다.

 

 

 

 

2. 둘러싼 (Enclosing) 변수

 

 Enclosing scope는 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다.

 

 
  def outer_function():
      enclosing_var = "둘러싼 범위 변수"

      def inner_function():
          print(enclosing_var)

      inner_function()

  outer_function()
 
둘러싼 범위 변수

ㄴ작동순서 1) 상위 변수가 메모리에 올라감 2) 하위함수가 실행 3) 상위함수가 실행

ㄴ부모함수에 있던 변수는 자식함수에서 변수를 가져다 쓸 수 있습니다.

ㄴ상위 함수가 실행된다고 하위가 자동으로 실행되지 않습니다.
ㄴ( 에러가 나지 않았지만 실행해보아야 잘 작동되는지 알 수 있습니다. )

 

 

 

3. 전역 (Global) 변수

Global scope는 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서 해당 변수로 사용됨을 의미합니다.

 

 
 
  global_var = "글로벌 변수"

  def test_global_scope():
      print(global_var)

  test_global_scope()
 
글로벌 변수

ㄴ 함수 밖에서 선언된 것은 함수 안으로 바로 사용할 수 있습니다.

 

 
  global_var = 10 # 글로벌변수  # 글로벌 변수에 string을 넣음

  def modify_global():
      global_var = 20 # 지역변수
      print(global_var)

  modify_global()    # 글로벌 변수를 호출 / 출력: 10
  print(global_var)  # 전역변수를 호출 / 출력: 20
 
 

 

10
20
 
  global_var = 10    # 글로벌 변수에 string을 넣음
  
  def modify_global():
      global global_var # 글로벌 변수를 호출
      global_var = 20     # 글로벌 변수를 수정함

  modify_global() # 호출 
  print(global_var)  # 수정한 전역변수가 나올까 ? O  / 출력: 20
 
20
20

 

 

 

4. 내장 범위 (Built-in) 

Built-in scope는 파이썬의 내장 함수와 모듈들이 속하는 범위입니다. 

예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.

 

 
  print(print)
  print(len)
  print(sum)
 
 <built-in function print>
<built-in function len>
<built-in function sum>

ㄴ기본적으로 사용하는 함수입니다.

 

 

2. 변수의 범위 탐색 순서

변수 이름이 겹칠 경우 무엇을 우선순위로 호출할까요? 순서는 다음과 같습니다.

 

 

1. Local scope
최우선이 지역변수입니다.

이름이 겹쳤을 때 지역변수 먼저 탐색합니다.


2. Enclosing scope
그 다음에는 밖을 감싸고 있는 함수에 변수가 우선시 됩니다.


3. Global scope
그 다음에 글로벌 변수를 탐색합니다.

 

4. Built-in scope 

마지막으로 내장함수의 변수를 탐색합니다.


따라서 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다. 이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요합니다.

 

 

'Python > 개념' 카테고리의 다른 글

Day 6-3. 객체지향과 클래스  (0) 2024.03.18
Day 6-2. 콜백함수와 람다함수  (0) 2024.03.15
Day 5-2. 사용자 정의 함수  (0) 2024.03.15
Day 5-1. 컬렉션과 반복문  (0) 2024.03.15
Day 4-5. 제어문 - 반복문  (0) 2024.03.14