python 함수

BackEnd_Ash.log·2020년 11월 28일
0

ComputerScience

목록 보기
3/8

전역변수

전역 변수는 전체 영역에서 접근 할 수 있는 변수입니다.

지역변수

특정 함수 내에서만 접근할 수 있는 변수입니다.

그러면 전역변수는 전역변수 선언한 곳에서만 바꿀수있고 ,
지역변수는 그 특정 함수 내에서만 접근해서 변수를 바꿀수있을까 ??

답은 아니다

지역변수 같은 경우는 맞지만 전역변수는 특정 함수 내에서 전역변수를 바꿀수가 있다.

g_var = 10


def func():
    global g_var
    g_var = 20


print(f"g_var : {g_var} before") # g_var : 10 before
func()
print(f"g_var : {g_var} after ") # g_var : 20 after

그냥 바꿀수는 없고 ,
global 라는 문법이 필요하다.

객체 참조에 의한 전달 - 변경 불가능 객체를 전달할때

def change_value(x, value):
    x = value
    print(f"x : {x} in change_value") # x : 20 in change_value


x = 10
change_value(x, 20)
print(f"x : {x} in main") # x : 10 in main

x 는 10 을 참조하게 된다.
그리고 change_value() 함수를 호출하면서 인자 x 를 전달한다.
함수를 호출하게 되면

x = value 코드가 실행되게 되는데 ,
x 가 value 가 가리키는 상수 객체를 참조하게 됩니다.

그러면서 change_value() 함수의 호출을 완료 한 스택프레임에는

전역변수에 있는 x 가 10을 참조하게 되는것만 남게 된다.

profile
꾸준함이란 ... ?

0개의 댓글