>백엔드 개발 >파이썬 튜토리얼 >Python의 네임스페이스 표준 정의

Python의 네임스페이스 표준 정의

高洛峰
高洛峰원래의
2017-03-03 15:15:451195검색

API 디자인은 예술 활동입니다. 종종 단순하고, 이해하기 쉽고, 깔끔하고, 번거롭지 않아야 합니다.

우리는 높은 수준의 사용을 위해 하위 계층에 메소드를 캡슐화하는 경우가 많으며, 다른 메소드는 이 메소드를 보조하기 위한 것입니다.
즉, 이 메서드만 노출하면 되며 이 메서드가 어떻게 구현되는지 또는 다른 보조 메서드가 있는지 신경 쓸 필요가 없습니다.
Python에는 네임스페이스를 깨끗하게 유지하기 위한 몇 가지 전략이 있습니다.

1. 밑줄 _로 시작하는 변수 이름
xxx import *에서 다른 모듈을 가져올 때 밑줄 _로 시작하는 변수는 가져오지 않습니다.
십진수의 소스 코드를 보면 가져온 모듈이 밑줄_로 시작하는 별칭으로 여러 번 변경된 것을 확인할 수 있습니다.
http://hg.python.org/cpython/file/2.7/Lib/decimal.py예를 들어

import copy as _copy
import math as _math
import numbers as _numbers

이것은 아닙니다. an egg 네임스페이스를 오염시키지 않기 위해 아프다

2. __all__ 정의
Python의 마법 방식은 정말 유연합니다.
내 모듈에 a(), b(), c() 3가지 메서드가 있다고 가정합니다
b와 c가 아닌 a를 노출하고 싶습니다.
이때, __all__=[a]
xxxmodule import *에서 다른 모듈을 import하면 a만 import됩니다.
게다가 개발자는 소스 코드를 읽고 __all__을 보면 시작할 방법이 없는 많은 코드를 사용하는 대신 어떤 메서드가 노출되어야 하는지 즉시 알 수 있습니다.

3. 이 변수를 사용한 후 del xxx를 통해
을 삭제합니다.
이렇게 하면 dir(xxxmodule)에서 화면을 채우는 변수의 수가 줄어듭니다.
마찬가지로 십진수 소스코드에서도 정규식 모듈 re를 사용한 후 del re를 사용해 삭제한 것을 볼 수 있습니다.
또 다른 방법은 import 문을 함수 내부에 넣어 함수를 로컬 범위로 제한하는 것입니다. 이 방법은 파이썬적이지 않다고 느껴서 추천하지 않습니다.

Python의 네임스페이스 표준 정의와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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