>  기사  >  백엔드 개발  >  Python의 네임스페이스에 대한 자세한 설명

Python의 네임스페이스에 대한 자세한 설명

王林
王林원래의
2023-06-09 21:10:353122검색

Python은 동적 언어로서 코드가 실행될 때 상수, 변수, 함수 등의 명명된 환경을 유지합니다. 이 환경은 네임스페이스라고도 불리는 네임스페이스입니다. 이 기사에서는 Python의 네임스페이스를 자세히 소개합니다.

  1. 네임스페이스 개요
    파이썬에서 네임스페이스는 이름과 객체 사이의 대응 관계를 저장하는 사전으로, 여기서 이름은 식별자(식별자)를 나타내고 객체는 모든 객체를 나타냅니다. Python의 모든 것은 정수, 부동 소수점 숫자, 문자열, 함수, 클래스 등을 포함한 객체입니다.
  2. 네임스페이스 분류
    파이썬에서 네임스페이스는 세 가지 유형으로 나눌 수 있습니다.

(1) 내장 네임스페이스(Built-in Namespace)
내장 네임스페이스는 파이썬 인터프리터가 시작될 때 로드되는 네임스페이스입니다. 내장 네임스페이스에는 기본적으로 개발자가 직접 사용할 수 있는 print(), type(), str() 등과 같은 일부 함수와 변수가 포함되어 있습니다. 내장 네임스페이스는 builtins 모듈을 통해서도 액세스할 수 있습니다.

(2) 글로벌 네임스페이스
글로벌 네임스페이스는 함수나 클래스가 아닌 모듈에 정의된 변수, 함수 등을 말합니다. 한 모듈에 정의된 전역 변수는 다른 모듈에서도 액세스할 수 있습니다. 모듈에는 하나의 전역 네임스페이스만 있으며 모듈의 모든 함수는 이 네임스페이스에 액세스할 수 있습니다.

(3) 로컬 네임스페이스
로컬 네임스페이스는 함수 호출 시 생성되는 네임스페이스로, 함수의 지역 변수, 매개변수, 임시 변수 등을 저장하는 데 사용됩니다. 함수 호출이 끝나면 로컬 네임스페이스도 삭제됩니다.

  1. 네임스페이스 검색 규칙
    변수를 사용할 때 Python은 먼저 로컬 네임스페이스에서 해당 변수를 검색합니다. 변수가 없으면 전역 네임스페이스에서 검색하고 마지막으로 내장 네임스페이스에서 검색합니다. 즉, Python에서는 로컬, 전역, 내장 순서로 변수를 검색합니다. 이 순서를 LEGB 규칙이라고 합니다.
  2. 네임스페이스 범위
    Python에서는 각 함수, 모듈, 클래스가 고유한 네임스페이스를 가지고 있습니다. 이름이 객체에 바인딩되면 해당 네임스페이스 내에서만 의미가 있습니다. 이름이 로컬 네임스페이스에 바인딩되어 있으면 함수 내에서만 의미가 있고, 이름이 전역 네임스페이스에 바인딩되어 있으면 모듈 내에서 의미가 있습니다. Python 인터프리터 전체에서 의미가 있습니다.
  3. globals() 및 locals() 함수를 통해 네임스페이스 가져오기
    Python에서 globals() 및 locals() 함수를 사용하여 해당 전역 네임스페이스와 로컬 네임스페이스를 가져올 수 있습니다. globals() 함수는 전역 네임스페이스의 사전을 반환하고, locals() 함수는 로컬 네임스페이스의 사전을 반환합니다.
  4. 네임스페이스에 대한 참고 사항
    (1) 네임스페이스의 이름은 법적 식별자여야 합니다.
    (2) 함수와 클래스는 새로운 네임스페이스를 생성합니다.
    (3) 변수 이름은 네임스페이스의 다른 개체에 다시 바인딩될 수 있습니다.
    (4) global 문을 사용하면 함수 내부의 변수가 전역 변수를 참조할 수 있습니다.
    (5) nonlocal 문을 사용하면 함수 내부의 변수가 외부 함수의 지역 변수를 참조할 수 있습니다.
    (6) Python의 네임스페이스 검색은 LEGB 규칙에 따라 수행됩니다.
  5. 결론
    이 글에서는 네임스페이스 개요, 네임스페이스 분류, 네임스페이스 검색 규칙, 네임스페이스 범위, globals() 및 locals() 함수를 통한 네임스페이스 획득 등을 포함하여 Python의 네임스페이스를 자세히 소개합니다. Python 초보자의 경우 네임스페이스를 이해하는 것은 Python 언어를 학습하는 데 중요한 단계입니다.

위 내용은 Python의 네임스페이스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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