전역 변수 및 Python의 함수에서 변경하는 방법
-
전역 변수
를 사용하고 Python의 함수에서 변경 -
Python에서
Global
변수 생성 -
Python의 함수에서
Global
변수의 값 변경 -
Python의
Global
키워드 - 다중 함수와 전역 변수
-
Global
변수와 이름이 같은 변수가 있는 함수 - 결론
파이썬의 ‘전역’ 변수는 ‘전역 범위’가 있는 변수입니다. 즉, 그 범위는 소스 코드의 특정 기능이나 블록에 국한되지 않습니다.
전역 변수
를 사용하고 Python의 함수에서 변경
먼저 변수 x
를 선언합니다.
def avengers():
x = 10
print("Gibberish")
avengers()
print(x)
출력:
Gibberish
NameError: name 'x' is not defined
변수 x
는 avengers
함수 내부에 있습니다. 이것은 이 변수의 범위가 이 함수로만 제한됨을 의미합니다.
이것이 이 함수 외부에서 이 변수에 액세스하려고 하면 오류가 발생하는 이유입니다.
Python에서 Global
변수 생성
변수 x
선언을 함수 외부로 이동합니다.
x = 10
def avengers():
print("Gibberish")
avengers()
print(x)
출력:
Gibberish
10
변수 x
는 함수 외부에 정의되어 있으므로 프로그램의 어느 곳에서나 사용할 수 있습니다.
또한 전역
변수입니다. 전역 범위에서 변수를 선언하면 Python에서 전역
변수가 생성됩니다.
avengers
함수에서 global
변수 x
에 액세스할 수도 있습니다.
x = 10
def avengers():
print("From avengers:", x)
avengers()
print("Outside avengers:", x)
출력:
From avengers: 10
Outside avengers: 10
Python의 함수에서 Global
변수의 값 변경
이 코드에는 10
이 포함된 전역
변수 x
가 있습니다. 그런 다음 change
함수 내에서 x
변수에 12
를 추가합니다.
함수 내부의 인쇄 문은 x
의 업데이트된 값을 인쇄해야 합니다.
x = 10
def change():
x = x + 12
print(x)
change()
출력:
UnboundLocalError: local variable 'x' referenced before assignment
파이썬에서 함수는 전역 변수
에만 액세스하고 인쇄할 수 있습니다. “전역 변수"에 대한 할당이나 변경을 참조하는 함수에 알려야 합니다.
이것을 지정하지 않으면 함수는 지역 변수 자체에 할당 및 변경이 이루어진 것으로 간주합니다. 따라서 이 오류가 발생합니다.
global
키워드를 사용하여 Python 함수 내부에서 전역 변수
값을 변경합니다.
Python의 Global
키워드
파이썬은 범위 밖의 변수를 수정하기 위해 global
이라는 키워드를 제공합니다. 변수 값을 변경하거나 할당해야 할 때 사용합니다.
global
키워드를 사용하여 위의 코드를 수정해 봅시다.
x = 10
def change():
global x
x = x + 12
print(x)
change()
출력:
22
세 번째 줄에서 global
키워드를 사용하여 x
를 global로 지정하는 방법을 확인하십시오.
이제 함수 외부에서 출력할 때 변수 x
의 값을 살펴보겠습니다.
x = 10
def change():
global x
x = x + 12
print(x)
change()
print(x)
출력:
22
22
함수가 x
를 10
에서 22
로 업데이트했으므로 로컬 범위 외부의 변수에 액세스하는 경우에도 업데이트된 값을 출력으로 가져옵니다.
var = "A"
def chocolate():
print("From chocolate:", var)
def cake():
global var
var = var * 2
print("From cake:", var)
chocolate()
cake()
print("From main:", var)
출력:
From chocolate: A
From cake: AA
From main: AA
이 결과에서 얻을 수 있는 가장 좋은 추론은 순서가 중요하다는 것입니다. chocolate
함수는 수정된 값이 아닌 var
의 초기 값을 사용합니다.
이는 var
의 값을 수정하는 cake
함수가 chocolate
함수 다음에 호출되기 때문입니다. cake
함수를 먼저 호출하면 chocolate
함수도 var
의 업데이트된 값을 사용합니다.
var = "A"
def chocolate():
print("From chocolate:", var)
def cake():
global var
var = var * 2
print("From cake:", var)
cake()
chocolate()
print("From main:", var)
출력:
From cake: AA
From chocolate: AA
From main: AA
이것은 Python의 global
키워드를 사용할 때 따라야 하는 몇 가지 규칙을 알려줍니다.
- 기본적으로 함수 내부의 변수는 로컬이고 함수 외부의 변수는
글로벌
입니다. 함수 외부의 변수에는 이 키워드를 사용하지 마십시오. - Python의 함수 외부에서
global
키워드를 사용하는 것은 어떤 식으로든 코드에 영향을 미치지 않습니다. global
키워드의 주요 용도는 Python에서 할당 또는 변경을 수행하는 것입니다. 따라서 단순히 변수에 액세스하거나 인쇄하는 데 필요하지 않습니다.
다중 함수와 전역 변수
여기에 값이 1
인 전역 변수 ``가 있습니다. college
함수가 global
키워드를 사용하여 s
값을 수정하는 방법을 확인하십시오.
s = 1
def college():
global s
s = s + 5
print("College students: ", s)
return s
def school():
s = college()
s = s + 10
print("School students: ", s)
return s
college()
school()
print("Global students: ", s)
출력:
College students: 6
College students: 11
School students: 21
Global students: 11
먼저 함수를 college
라고 부릅니다. 이 함수는 전역 변수 ``를 수정하고 6
으로 변경합니다.
첫 번째 인쇄 문에서 6
으로 출력을 얻습니다. 그런 다음 함수를 school
이라고 합니다.
함수 college
내에서 school
함수를 다시 호출합니다. 이번에는 college
함수도 s
변수의 값을 수정합니다.
6
의 이전 값을 가져온 다음 11
로 업데이트합니다. 따라서 전역 변수의 최종 값은 이제 11
이 됩니다.
그런 다음 school
함수가 이를 수정하지만 전역 변수에서는 업데이트되지 않습니다. s
의 업데이트된 값을 사용하고 10
을 추가한 후 값을 인쇄합니다.
global
키워드를 사용하지 않습니다. 따라서 출력 21
. 이제 마지막 문의 출력이 11
인 이유를 알 수 있습니다.
이것은 전역 변수 s
의 업데이트된 값일 뿐입니다.
Global
변수와 이름이 같은 변수가 있는 함수
global
변수와 이름이 같은 변수가 내부에 선언된 함수가 있을 가능성이 있습니다.
여기서 발생하는 피할 수 없는 질문은 - 함수가 사용할 변수는 무엇입니까? 로컬 또는 글로벌? 우리에게 보여줘.
# the global variable
a = 5
# function
def music():
# variable inside function with same name as global variable
a = 10
print("Music:", a)
music()
print(a)
출력:
Music: 10
5
이 코드에는 global
변수 a
가 있으며, 그 값은 5
입니다. music
함수에는 a
라는 변수도 있습니다.
이 변수의 값은 10
입니다. 함수 내에서 변수 a
의 값에 액세스하면 이 함수에 로컬인 변수 값인 10
을 얻습니다.
이 함수 외부에서 `` 값에 액세스하면 5
로 출력됩니다.
이는 local
변수가 특정 범위의 global
변수와 동일한 이름으로 존재하는 경우 전역 변수보다 우선순위가 높다는 것을 의미합니다.
결론
이 튜토리얼은 파이썬에서 전역
변수의 기초를 가르쳤습니다. 우리는 그것들이 local
변수와 어떻게 다른지, 그리고 파이썬에서 어떻게 생성하는지 보았습니다.