Python 활용하기

변수의 범위

swwho 2023. 10. 24. 00:36
728x90
반응형

유효 범위 (variable scope)

  • 변수의 선언에 따라 해당 변수가 미치는 범위
  • python에는 지역변수(local variable)과 전역변수(global variable)이 있다.

지역변수 (local variable)

  • 함수 내에서 선언된 변수
  • 일반적으로는 함수 내에서만 사용 가능하다.
def func():
    a = 'local variable'
    print(a)

func() # local variable

지역변수 (global variable)

  • 함수 외부에서 선언된 변수
  • gloabl 키워드를 통해 함수 내부에서 사용 가능하다.
def func():
    a = 'local variable'
    print(a)
    
a = 'global variable'
print(a)
func()

# global variable
# local variable
def func():
    global a
    a = 'B'
    print(a)
    
a = 'A'
func()

# B

  • nonlocal은 global 키워드와 달리 중첩함수 내에서의 변수 범위를 대상으로 한다.
def func():
    a = 1
    
    def plus():
        a = 2
        
    plus()
    print(a)
    
func()

# 1
def func():
    a = 1
    
    def plus():
        nonlocal a
        a = 2
        
    plus()
    print(a)
    
func()

# 2

* mutable, immutable

  • mutable객체는 수정 가능하다. (list, dict)
  • immutable객체는 수정 불가능하다. (int, float, str, tuple)
a = 0
b = [0]
c = {'c':0}
d = [0]
e = [0]

def func():
    # a += 1
    b[0] += 1
    c['c'] += 1
    d.append(1)
    e = [1]
    # print('a:', a)
    print('b:', b)
    print('c:', c)

func()
print(d)
print(e)

# a : cannot access local variable 'a' where it is not associated with a value
# b : [1]
# c : {'c':1}
# d : [0, 1]
# e : [0]