#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목전역변수와 지역변수의 차이 : scope / block이란 무엇인가?2020-04-12 02:26
작성자

변수variable라는 것은 값value을 저장하는 저장매체입니다.


코딩을 할 때 변수는 전역변수, 지역변수 등으로 그 변수가 쓰일 수 있는 공간이 존재합니다.


만약 변수 var1이 A라는 공간(scope / block)에서 선언되었다면 A에 대한 접근 권한이 없는 B에서는 var1이라는 변수를 사용할 수 없으며, 사용하려고 한다면 에러가 납니다.


그렇다면 파이썬에서는 어떤 공간이 있는 걸까요?


1. 전역변수

mb-file.php?path=2020%2F04%2F11%2FF870_%EB%B3%80%EC%88%981.png

위 코드에서 띄어쓰기 없이 작성된 곳을 global scope, 전역공간이라고 합니다.


이 곳에서 선언한 모든 변수(예. iAmGlobal)는 코드 내에 그 어떤 scope이라도 사용할 수 있지요.


printGlobalVar에서 iAmGlobal이라는 변수는 전역변수로, 3이라는 값을 그대로 갖고 있습니다


그렇다면 지역변수를 한 번 볼까요?


2. 지역변수

mb-file.php?path=2020%2F04%2F12%2FF871_%EB%B3%80%EC%88%982.png
지역변수 iAmLocal은 setLocalVar이라는 함수 안에만 존재하는 변수입니다.


전역에서는 지역변수를 참조할 권한이 없습니다. 


그렇기 때문에 전역에서 호출된 함수 print는 iAmLocal이라는 변수를 찾지 못해 우측과 같이 에러를 내게 됩니다.


3. 이름이 같다면?

mb-file.php?path=2020%2F04%2F12%2FF872_%EB%B3%80%EC%88%983.png만약 printGlobalVar과는 달리, iAmGlobal을 함수 내에서 정의해준다면 어떻게 될까요?

전역변수일까요, 지역변수일까요?


정답은 지역변수입니다.


파이썬에서 전역변수를 받아 읽기만 하는게 아니라 쓰기까지 해주려면 global 키워드를 사용하여, 이 변수는 global입니다, 를 지시해주어야합니다.

댓글