Python의 전역 및 지역 변수
Python 전역 변수 함수 내부에 정의되지 않고 전역 범위를 갖는 반면 Python은 지역 변수 함수 내부에 정의된 함수이며 그 범위는 해당 함수로만 제한됩니다. 즉, 지역 변수는 초기화된 함수 내에서만 접근할 수 있는 반면, 전역 변수는 프로그램 전체와 모든 함수 내부에서 접근할 수 있다고 말할 수 있습니다.
Python 지역 변수
Python의 지역 변수는 함수 내부에서 초기화되고 해당 특정 함수에만 속하는 변수입니다. 함수 외부에서는 접근할 수 없습니다. 지역변수를 생성하는 방법을 살펴보겠습니다.
Python에서 지역 변수 만들기
지역 변수 정의 및 액세스
파이썬3
def> f():> > # local variable> > s> => 'I love Geeksforgeeks'> > print> (s)> # Driver code> f()> |
산출
I love Geeksforgeeks
지역 변수를 함수 외부에서 사용할 수 있나요?
함수 외부에서 이 지역 변수를 사용하려고 하면 어떤 일이 일어나는지 살펴보겠습니다.
파이썬3
def> f():> > > # local variable> > s> => 'I love Geeksforgeeks'> > print> (> 'Inside Function:'> , s)> # Driver code> f()> print> (s)> |
산출:
NameError : name 's' is not defined
Python 전역 변수
이는 함수 외부에서 정의되고 프로그램 전체, 즉 모든 함수 내부 및 외부에서 액세스할 수 있는 것입니다. Python 전역 변수를 만드는 방법을 살펴보겠습니다.
전역 변수 만들기 파이썬에서
Python 전역 변수를 정의하고 액세스합니다.
파이썬3
# This function uses global variable s> def> f():> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (> 'Outside Function'> , s)> |
산출
Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks
변수 s는 전역 변수로 정의되며 함수 내부와 함수 외부 모두에서 사용됩니다.
메모: 지역 변수가 없으므로 전역 변수의 값이 사용되지만 지역 변수와 전역 변수의 이름이 모두 같아야 합니다.
Python에서 로컬 및 글로벌 변수를 사용하는 이유는 무엇입니까?
이제 전역적으로는 물론 함수 내부에도 동일한 이름의 Python 변수가 초기화되어 있으면 어떻게 될까요? 이제 질문이 생깁니다. 지역 변수가 전역 변수에 어떤 영향을 미칠 것인가, 아니면 그 반대일 것인가, 그리고 함수 f() 내부에서 변수의 값을 변경하면 어떤 일이 일어날 것인가? 글로벌에도 영향을 미치나요? 다음 코드에서 이를 테스트합니다.
예
동일한 이름을 가진 변수가 함수 범위 내에서도 정의되면 전역 값이 아닌 함수 내부에 제공된 값만 인쇄됩니다.
파이썬3
# This function has a variable with> # name same as s.> def> f():> > s> => 'Me too.'> > print> (s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (s)> |
산출
Me too. I love Geeksforgeeks
이제 함수 내부에서 전역 변수의 값을 변경하려고 하면 어떻게 될까요? 아래 예를 사용하여 살펴보겠습니다.
파이썬3
# This function uses global variable s> def> f():> > s> +> => 'GFG'> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> |
산출:
UnboundLocalError : local variable 's' referenced before assignment
위 프로그램이 작동하게 하려면 Python에서 global 키워드를 사용해야 합니다. 이 글로벌 키워드가 무엇인지 살펴보겠습니다.
글로벌 키워드
우리는 단지 글로벌 키워드 할당을 수행하거나 전역 변수를 변경하려는 경우 함수에서. 인쇄 및 액세스에는 global이 필요하지 않습니다. Python은 f() 내부의 s 할당으로 인해 지역 변수가 필요하다고 가정하므로 첫 번째 문에서 오류 메시지가 발생합니다. 함수 내에서 변경되거나 생성된 모든 변수는 전역 변수로 선언되지 않은 경우 로컬 변수입니다. Python에 전역 변수를 사용하고 싶다고 알리려면 키워드를 사용해야 합니다. 글로벌 , 다음 예에서 볼 수 있듯이:
예시 1: Python 전역 키워드 사용
파이썬3
# This function modifies the global variable 's'> def> f():> > global> s> > s> +> => ' GFG'> > print> (s)> > s> => 'Look for Geeksforgeeks Python Section'> > print> (s)> # Global Scope> s> => 'Python is great!'> f()> print> (s)> |
산출
Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section
이제 더 이상 모호함이 없습니다.
예시 2: Python 전역 및 지역 변수 사용
파이썬3
a> => 1> # Uses global because there is no local 'a'> def> f():> > print> (> 'Inside f() : '> , a)> # Variable 'a' is redefined as a local> def> g():> > a> => 2> > print> (> 'Inside g() : '> , a)> # Uses global keyword to modify global 'a'> def> h():> > global> a> > a> => 3> > print> (> 'Inside h() : '> , a)> # Global scope> print> (> 'global : '> , a)> f()> print> (> 'global : '> , a)> g()> print> (> 'global : '> , a)> h()> print> (> 'global : '> , a)> |
산출
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3
지역변수와 지역변수의 차이점 전역 변수
| 비교 기준 | 전역 변수 | 지역변수 |
| 정의 | 함수 외부에 선언됨 | 함수 내에서 선언됨 |
| 일생 | 프로그램 실행이 시작될 때 생성되고 프로그램이 종료되면 손실됩니다. | 함수가 실행을 시작할 때 생성되고 함수가 끝나면 손실됩니다. |
| 데이터 공유 | 데이터 공유 제공 | 데이터 공유를 제공하지 않습니다 |
| 범위 | 코드 전반에 걸쳐 접근 가능 | 함수 내부에서만 접근 가능 |
| 필요한 매개변수 | 매개변수 전달은 필요하지 않습니다. | 매개변수 전달이 필요합니다 |
| 저장 | 컴파일러가 선택한 고정 위치 | 그들은 스택에 보관됩니다 |
| 값 | 값이 변경되면 코드 전체에 반영됩니다. | 일단 변수가 변경되면 프로그램의 다른 기능에는 영향을 미치지 않습니다 |