728x90

파이썬 범위

파이썬범위scope

Python Scope

파이썬 범위에 대해 알아보기 위해 아래 코드를 보고, 함수 내에 있는 변수 variable 의 값은 무엇이고 함수 밖에 있는 변수 variable의 값은 무엇이로 나올지 생각해 보겠습니다.

variable = 1

def increase_variable():
	variable = 3
    print(f"함수 내에 있는 변수: {variable}")
 
 increase_variable()
 print(f"함수 밖에 있는 변수: {variable}")

생각해 보셨나요?

.

.

.

.

.

함수 내 변수: 3

함수 밖의 변수: 1

이런 결과가 나옵니다.

 

Global

그러면 함수 내의 변수도 함수 밖에 변수를 그대로 이용하기 위해서는 아래 코드 처럼, global 을 함수내에 써주면 됩니다.

variable = 1

def increase_variable():
	global variable
    print(f"함수 내에 있는 변수: {variable")
 
 increase_variable()
 print(f"함수 밖에 있는 변수: {variable")

함수 내 변수: 1

함수 밖의 변수: 1

 

Global 쓰지 않기

global 을 쓰지 않고 함수내에서 바깥 변수를 적용 하려면 return 을 이용합니다.

variable = 1

def increase_variable():
    return variable + 3
 

print(increase_variable())
print(f"함수 밖에 있는 변수: {variable}")

위와 같은 경우 increase_variable() 이라는 함수에는 변수 + 3 의 값인 4이 값이 저장되어 있습니다.

그래서 print(increase_variable()) 을 하면 4 라는 값이 나옵니다.

물론 여전히 print(f"함수 밖에 있는 변수: {variable}") 의 variable 값은 1입니다.

 

Remember that in Python there is no block scope. Inside a if/else/for/while code block is the same as outside it.

파이썬에는 C언어와 같은 block scope 이 없습니다.

if/else/for/while 와 그 바깥 범위는 같습니다.

 

그러면 Global Scope 은 절대 쓰면 안될까?

 

변하지 않는 값, Constant(상수)를 사용하기에는 Global Scope가 좋습니다.

특정,

URL = "http://thinkingcells.tistory.com"

Pi = 3.1415

 

등 변하지 않을 값을 그 때 그 때 가져다 쓰기에 유용합니다.

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기