전역 키워드 없이 전역 변수에 액세스
Python에서 전역 변수는 지역 변수와 별도의 네임스페이스에 저장됩니다. 함수 내에서 전역 변수에 액세스하려면 일반적으로 global 키워드가 사용됩니다. 그러나 전역 변수를 명시적으로 선언하지 않고도 액세스할 수 있는 상황이 있습니다.
다음 코드를 고려하세요.
sub = ['0', '0', '0', '0'] def getJoin(): return '.'.join(sub) getJoin()
이 코드에서 getJoin 함수는 결합된 요소를 반환합니다. 전역 변수인 하위 목록의 놀랍게도 이 함수는 전역 키워드를 사용하지 않고도 sub에 접근할 수 있습니다.
왜 이런 일이 발생하나요?
Dynamic Scope
Python은 동적 범위를 사용합니다. , 이는 변수가 현재 범위에서 검색된 다음 발견될 때까지 주변 범위에서 검색됨을 의미합니다. getJoin 함수에서 sub 변수는 로컬에서 찾을 수 없습니다. 따라서 전역 범위인 인클로징 스코프를 검색하여 거기에 하위 변수를 찾습니다.
변수 바인딩
변수에 접근하면 바인딩됩니다. 기억 장소로. sub의 경우 '0' 목록이 포함된 메모리 위치에 바인딩됩니다. 이 바인딩 프로세스는 인터프리터가 할당문 sub = ['0', '0', '0', '0']을 발견할 때 발생합니다.
함수 액세스
getJoin 함수가 호출되면 실행되고 인터프리터는 필요한 변수를 검색합니다. sub는 로컬에서 찾을 수 없으므로 바깥쪽 범위를 살펴보고 이미 바인딩된 하위 변수를 찾습니다. 그런 다음 함수는 '0' 목록이 포함된 이 메모리 위치에 저장된 데이터에 액세스합니다.
전역 키워드
전역 키워드는 수정하려는 경우에 유용합니다. 또는 로컬 컨텍스트 내에서 전역 변수를 만듭니다. 그러나 전역 변수가 이미 바깥쪽 범위 내의 메모리 위치에 바인딩된 경우 전역 변수에 액세스할 필요는 없습니다.
위 내용은 Python 함수가 `global` 키워드 없이 전역 변수에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!