>백엔드 개발 >파이썬 튜토리얼 >`global` 키워드를 사용하지 않고 Python에서 전역 변수에 언제 액세스할 수 있나요?

`global` 키워드를 사용하지 않고 Python에서 전역 변수에 언제 액세스할 수 있나요?

DDD
DDD원래의
2024-12-25 03:32:20119검색

When Can I Access Global Variables in Python Without Using the `global` Keyword?

Python에서 'global' 키워드 없이 전역 변수에 액세스

Python에서 함수 내의 전역 변수에 액세스하려면 일반적으로 다음을 사용해야 합니다. '글로벌' 키워드. 그러나 전역 변수를 명시적으로 선언하지 않고도 액세스할 수 있는 경우가 있습니다.

문제:

왜 전역 변수에 액세스할 수 있습니까? 다음 코드 조각에서 볼 수 있듯이 'global' 키워드를 사용하지 않고:

sub = ['0', '0', '0', '0']

def getJoin():
    return '.'.join(sub)

print(getJoin())  # Output: '0.0.0.0'

설명:

'global' 키워드는 주로 로컬 컨텍스트 내에서 전역 변수를 수정하거나 생성하는 데 사용됩니다. 그러나 어떤 경우에는 다음과 같은 이유로 명시적으로 전역 변수를 선언하지 않고도 전역 변수에 접근할 수 있습니다.

  • 변수 섀도잉: 전역 변수가 지역 범위 내에서 정의되면 지역 변수가 우선 적용됩니다. 이를 변수 섀도잉이라고 합니다.
  • 네임스페이스 규칙: Python에는 각 함수에 대해 별도의 네임스페이스가 있습니다. 그러나 함수 내에서 명시적으로 정의되지 않은 채 함수 내에서 변수에 액세스하면 인터프리터는 전역 네임스페이스에서 해당 변수를 검색합니다. 변수가 전역 네임스페이스에 있으면 반환됩니다.

예:

다음 코드를 고려하세요.

def bob():
    me = "locally defined"  # Defined only in local context
    print(me)

bob() 함수를 호출하면 me라는 지역 변수가 함수 내에 정의되었기 때문에 "locally Defined"가 인쇄됩니다. 그러나 'global' 키워드 없이 함수 외부에서 액세스하려고 하면 'UnboundLocalError'가 발생합니다.

print(me)  # Asking for a global variable

결론:

일반적으로 전역 변수를 수정하거나 생성할 때 'global' 키워드를 사용하는 것이 권장되지만 명시적으로 선언하지 않고도 전역 변수에 액세스할 수 있는 경우도 있습니다. 이 동작은 변수 섀도잉과 Python 네임스페이스 내의 검색 메커니즘으로 인해 발생합니다. 그러나 암시적 전역 변수 액세스에 의존하면 오류와 혼란이 발생할 수 있으므로 필요한 경우 'global' 키워드를 명시적으로 사용하는 것이 가장 좋습니다.

위 내용은 `global` 키워드를 사용하지 않고 Python에서 전역 변수에 언제 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.