전역 변수
전역 변수 (Global Variables)
전역 변수(global variable)는 Octave 어디에서든 접근할 수 있는 변수예요. 함수를 호출할 때 매개변수로 포함하는 것처럼 명시적으로 전달하지 않아도 현재 컨텍스트 밖에서 접근할 수 있는 로컬 변수와는 대조적이죠.
출처: 문서
본문
전역 변수는 Octave 어디에서든 접근할 수 있는 변수예요. 이는 함수를 호출할 때 매개변수로 포함하는 것처럼 명시적으로 전달하지 않으면 현재 컨텍스트 밖에서 접근할 수 없는 로컬 변수와 대조돼요.
변수는 global 선언문을 사용해 전역으로 선언돼요. 다음 문장들은 모두 전역 선언이에요.
global a
global a b
global c = 2
global d = 3 e f = 5
global 한정자는 다음 문장 종료 표시(쉼표 ,, 세미콜론 ;, 또는 개행 '\n')까지만 적용돼요. 예를 들어 다음 코드는 전역 변수 하나 a와 값 1이 할당된 로컬 변수 하나 b를 선언해요.
global a, b = 1
전역 변수는 global 문에서 한 번만 초기화될 수 있어요. 예를 들어 다음 코드를 실행한 후
global gvar = 1
global gvar = 2
전역 변수 gvar의 값은 2가 아니라 1이에요. clear gvar 명령으로는 위 동작이 바뀌지 않지만, clear all은 바꿔요.
하나의 보편적 변수에 접근하려면 함수 본문 안에서도 그 변수를 전역으로 선언해야 해요. 예를 들어
global x
function f ()
x = 1;
endfunction
f ()
는 전역 변수 x의 값을 1로 설정하지 않아요. 대신 x라는 로컬 변수가 만들어져 값 1이 할당돼요. 전역 변수 x의 값을 바꾸려면 함수 본문 안에서도 전역으로 선언해야 해요.
function f ()
global x;
x = 1;
endfunction
전역 변수를 함수의 매개변수 목록에 전달하면 로컬 복사본을 만들 뿐 전역 값을 수정하지 않아요. 예를 들어 함수
function f (x)
x = 0
endfunction
가 있고, 최상위 레벨에서 x를 전역 변수로 정의했다면
global x = 13
표현식
f (x)
은 함수 안에서 x의 값을 0으로 표시하지만, 최상위 레벨의 x 값은 그대로 남아요. 함수가 인자의 복사본으로 작업하기 때문이에요.
프로그래밍 주의: 전역 변수가 때로는 코딩 문제에 대한 올바른 해결책이기도 하지만, 현대적 모범 사례는 그 사용을 권장하지 않아요. 전역 변수에 의존하는 코드는 사용자마다 예측할 수 없게 동작할 수 있고 디버깅이 어려울 수 있어요. 전역 변수는 시스템 전반의 변화를 도입해서 버그를 특정 함수나 함수 안의 특정 루프로 국한하기 어렵게 만들 수 있기 때문이에요.
isglobal은 이름이 전역으로 보이는 변수면 true를 반환해요.
global x
isglobal ("x")
⇒ 1
더 알아보기
- 영속 변수(Persistent Variables)에 대한 내용을 이어서 보면 좋아요.
isvarname,exist함수도 함께 살펴보세요.