Python Language
전달 문
수색…
통사론
- 패스
비고
왜 당신은 명시 적으로 아무 것도하지 말라고 해석기에게 말하고 싶습니까? 파이썬은 코드 블록 ( if
, except
, def
, class
등의 뒤)을 비울 수 없다는 문법적 요구 사항을 가지고 있습니다.
그러나 때로는 빈 코드 블록이 그 자체로 유용합니다. 빈 class
블록은 catch 될 수있는 예외와 같은 새롭고 다른 클래스를 정의 할 수 있습니다. except
블록은 용서를 구할 필요가 없다면 "나중에 용서를 구하십시오"라는 가장 간단한 표현 일 수 있습니다. 반복자가 모두 무거워지면 반복자를 실행하기위한 빈 for
루프가 유용 할 수 있습니다.
따라서 코드 블록에서 아무 것도 일어나지 않으면 IndentationError
생성되지 않도록 해당 블록에 pass
가 필요합니다. 또한, 모든 문 (단지 용어를 포함한이 같은 평가하는 Ellipsis
문자 ...
사용할 수있는 대부분 문서화 문자열 또는 문자열),하지만 pass
실제로 아무것도 일이되어 있지 않은지 명확하게하고, 필요로하지 않는다 실제로 평가되고 적어도 일시적으로 메모리에 저장됩니다. 다음은 좋은 방법과 나쁜 방법에 대한 의견과 함께 가장 자주 사용되는 pass
의 작은 주석이 달린 컬렉션입니다.
특정 유형의
Exception
(all 또는)를 무시합니다 (xml
예제).try: self.version = "Expat %d.%d.%d" % expat.version_info except AttributeError: pass # unknown
참고 : 다음 예제와 같이
pandas
에서와 같이 모든 유형의 레이즈는 무시됩니다.KeyboardInterrupt
나SystemExit
(또는 심지어HardwareIsOnFireError
와 같이 호출자에게 전달되어야하는 예외를 catch하기 때문에 일반적으로 나쁜 습관으로 간주됩니다. 특정 호출 응용 프로그램에서 알기를 원하는 특정 오류가있는 사용자 정의 상자에서 실행되고 있지 않습니까?).try: os.unlink(filename_larry) except: pass
적어도
except Error:
또는이 경우에는except OSError:
except Error:
는 적어도 더 나은 방법으로 간주됩니다. 필자가 설치 한 모든 파이썬 모듈에 대한 빠른 분석 결과에 따르면 모든except ...: pass
10 % 이상이except ...: pass
문에서 모든 예외를 catch하므로 파이썬 프로그래밍에서 여전히 빈번한 패턴입니다.새 동작을 추가하지 않는 예외 클래스를 파생
scipy
(예 :scipy
).class CompileError(Exception): pass
마찬가지로 추상 기본 클래스로 의도 된 클래스는 명시 적으로 비어있는
__init__
또는 하위 클래스가 파생되어야하는 다른 메소드를 가지고 있습니다. (예 :pebl
)class _BaseSubmittingController(_BaseController): def submit(self, tasks): pass def retrieve(self, deferred_results): pass
mpmath
에서 결과를 신경 쓰지 않고 코드가 몇 가지 테스트 값에 대해 올바르게 실행되는지 테스트합니다.for x, error in MDNewton(mp, f, (1,-2), verbose=0, norm=lambda x: norm(x, inf)): pass
클래스 또는 함수 정의에서, 블록의 유일한 것으로 실행될 의무 성명서 로서 문서화 문자열이 이미 준비되어있는 경우가 많습니다. 이러한 경우, 블록을 포함 할 수 있습니다
pass
말을하기 위해 문서화 문자열에 추가를, 예를 들어 "이것은 참으로 아무것도 할 것입니다."pebl
:class ParsingError(Exception): """Error encountered while parsing an ill-formed datafile.""" pass
필자가 개인적으로
Ellipsis
리터럴을 선호하지만pass
는 "이 메서드 / 클래스 / if-block / ... 아직 구현되지 않았지만이 작업을 수행 할 장소가 될 것입니다"라는 말의 자리 표시 자로 사용됩니다...
(참고 : 파이썬-3 전용) 순서로 엄격이 이전 예제에서 의도적 인 "무 조작"을 구별합니다. 예를 들어, 모형을 넓은 획으로 쓴다면def update_agent(agent): ...
다른 사람들이 가질 수있는 곳
def update_agent(agent): pass
전에
def time_step(agents): for agent in agents: update_agent(agent)
나중에
update_agent
함수를 작성하라는 알림으로서 나머지 코드는 의도 한대로 작동하는지 확인하기 위해 일부 테스트를 이미 실행하십시오. (이 경우에 대한 세 번째 옵션은raise NotImplementedError
입니다.이 방법은 "이 추상 메서드는 모든 하위 클래스에서 구현되어야raise NotImplementedError
기본 클래스에서이 추상 메서드를 정의 할 수있는 일반적인 방법이 없습니다" 또는 "이 함수 ,이 이름은 아직이 릴리스에서는 구현되지 않았지만 서명은 다음과 같습니다. " )
예외 무시
try:
metadata = metadata['properties']
except KeyError:
pass
잡힐 수있는 새로운 Exception 만들기
class CompileError(Exception):
pass