전역 변수 및 Python의 함수에서 변경하는 방법

Shikha Chaudhary 2023년1월30일
  1. 전역 변수를 사용하고 Python의 함수에서 변경
  2. Python에서 Global 변수 생성
  3. Python의 함수에서 Global 변수의 값 변경
  4. Python의 Global 키워드
  5. 다중 함수와 전역 변수
  6. Global 변수와 이름이 같은 변수가 있는 함수
  7. 결론
전역 변수 및 Python의 함수에서 변경하는 방법

파이썬의 ‘전역’ 변수는 ‘전역 범위’가 있는 변수입니다. 즉, 그 범위는 소스 코드의 특정 기능이나 블록에 국한되지 않습니다.

전역 변수를 사용하고 Python의 함수에서 변경

먼저 변수 x를 선언합니다.

def avengers():
    x = 10
    print("Gibberish")


avengers()
print(x)

출력:

Gibberish

NameError: name 'x' is not defined

변수 xavengers 함수 내부에 있습니다. 이것은 이 변수의 범위가 이 함수로만 제한됨을 의미합니다.

이것이 이 함수 외부에서 이 변수에 액세스하려고 하면 오류가 발생하는 이유입니다.

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

함수가 x10에서 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 변수와 어떻게 다른지, 그리고 파이썬에서 어떻게 생성하는지 보았습니다.

관련 문장 - Python Scope