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 

지역변수와 지역변수의 차이점 전역 변수

비교 기준 전역 변수 지역변수
정의 함수 외부에 선언됨 함수 내에서 선언됨
일생 프로그램 실행이 시작될 때 생성되고 프로그램이 종료되면 손실됩니다. 함수가 실행을 시작할 때 생성되고 함수가 끝나면 손실됩니다.
데이터 공유 데이터 공유 제공 데이터 공유를 제공하지 않습니다
범위 코드 전반에 걸쳐 접근 가능 함수 내부에서만 접근 가능
필요한 매개변수 매개변수 전달은 필요하지 않습니다. 매개변수 전달이 필요합니다
저장 컴파일러가 선택한 고정 위치 그들은 스택에 보관됩니다
값이 변경되면 코드 전체에 반영됩니다. 일단 변수가 변경되면 프로그램의 다른 기능에는 영향을 미치지 않습니다