저는 파이썬을 배우는 과정에 있으며 pass진술 에 관한 섹션에 도달했습니다 . 내가 사용하는 가이드 Null는 일반적으로 자리 표시 자로 사용되는 설명문 으로 정의합니다 .
그래도 그 의미를 완전히 이해하지 못합니다. 누군가가 pass진술이 사용될 간단한 / 기본 상황 과 왜 필요한지를 보여줄 수 있습니까 ?
답변
아직 구현하고 싶지 않은 메소드를 사용하여 새 클래스를 설계한다고 가정하십시오.
class MyClass(object):
    def meth_a(self):
        pass
    def meth_b(self):
        print "I'm meth_b"
를 생략 pass하면 코드가 실행되지 않습니다.
그러면 다음을 얻습니다.
IndentationError: expected an indented block
요약하면,이 pass진술은 특별한 것은 아니지만 여기에 설명 된 것처럼 자리 표시 자 역할을 할 수 있습니다.
답변
파이썬은 코드 블록 (후 그 구문 요구 사항이 if, except, def, class등) 비워 둘 수 없습니다 수 있습니다. 그러나 빈 코드 블록은 내가 본 가장 빈번한 사용 사례 인 아래 예제와 같이 다양한 컨텍스트에서 유용합니다.
따라서 코드 블록에서 아무 것도 발생 pass하지 않으면 이러한 블록에을 생성하지 않으려면 a 가 필요합니다 IndentationError. 또는 모든 문 ( Ellipsis리터럴 ...또는 문자열 과 같이 평가할 용어 포함 , 대부분은 docstring)을 사용할 수 있지만 pass실제로는 아무 일도 일어나지 않아야하며 실제로 평가할 필요가 없으며 (적어도 일시적으로) 메모리에 저장됩니다.
- 
(전부 또는)의 특정 유형 무시
Exception(의 예를xml)try: self.version = "Expat %d.%d.%d" % expat.version_info except AttributeError: pass # unknown참고 : 에서 다음 예제와 같이 인상의 모든 유형을 무시
pandas그것도 아마 호출자에게 전달해야한다 예외, 예를 잡는다 때문에, 일반적으로 생각된다 나쁜 관행KeyboardInterrupt또는SystemExit(또는HardwareIsOnFireError– 당신은 어떻게 당신이하지 알 수 있습니까 특정 오류가 정의 된 사용자 정의 상자에서 실행 중입니다. 일부 호출 응용 프로그램은 알고 싶습니다.).try: os.unlink(filename_larry) except: pass대신에
except Error:또는 적어도이 경우에 사용하는 것이except OSError:훨씬 더 나은 방법으로 간주된다. 내가 설치 한 모든 파이썬 모듈에 대한 빠른 분석으로 모든except ...: pass문장 의 10 % 이상이 모든 예외를 포착하므로 파이썬 프로그래밍에서 여전히 빈번한 패턴입니다. - 
새 동작을 추가하지 않는 예외 클래스 파생 (예 🙂
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 - 
클래스 또는 함수 정의에서 종종 docstring이 블록의 유일한 것으로 실행되어야 하는 필수 명령문 으로 이미 존재 합니다. 그러한 경우, 블록은 “이것은 실제로 아무 것도하려는 의도가 없다”고 말하기 위해 docstring
pass과 함께 포함될 수 있습니다pebl.class ParsingError(Exception): """Error encountered while parsing an ill-formed datafile.""" pass - 
어떤 경우에는,
pass제가 개인적으로 좋아하지만, 말을 자리 표시 자로 사용 “이 방법 / 클래스 / IF 블록이 / … 아직 구현되지 않았지만이 할 수있는 장소가 될 것”Ellipsis문자를...하기 위해 이 예와 이전 예에서 의도적 인 “no-op”를 엄격하게 구분합니다. ( Ellipsis 리터럴은 Python 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. 특히 두 가지 경우에 유용합니다. “이 추상 메소드는 모든 서브 클래스에 의해 구현되어야합니다.이 기본 클래스에서이를 정의하는 일반적인 방법은 없습니다” 또는 ” 이 이름은 아직이 릴리스에서 구현되지 않았지만 서명 방식은 다음과 같습니다.” ) 
답변
구현되지 않은 함수의 자리 표시 자로 사용하는 것 외에도 passif-else 문을 작성하는 데 유용 할 수 있습니다 ( “명시 적 의미는 암시 적보다 낫습니다”).
def some_silly_transform(n):
    # Even numbers should be divided by 2
    if n % 2 == 0:
        n /= 2
        flag = True
    # Negative odd numbers should return their absolute value
    elif n < 0:
        n = -n
        flag = True
    # Otherwise, number should remain unchanged
    else:
        pass
물론,이 경우 return할당 대신에 사용 하지만, 돌연변이가 필요한 경우에는 이것이 가장 효과적입니다.
pass여기를 사용하면 미래의 유지 관리 담당자 (자신 포함)에게 조건문 외부에 중복 단계를 두지 않도록 경고하는 데 특히 유용합니다. 위의 예 flag에서, 구체적으로 언급 된 두 경우에 설정되지만 else-case 에는 설정되지 않습니다 . 사용하지 않고 pass, 미래의 프로그래머는 이동할 수있는 flag = True외부 조건 – 따라서 설정 flag에서 모든 사건을.
또 다른 경우는 파일의 맨 아래에 자주 상용구 기능이있는 경우입니다.
if __name__ == "__main__":
    pass
일부 파일의 경우 pass나중에 쉽게 편집하고 파일을 자체적으로 실행할 때 아무 일도 일어나지 않을 것임을 명시하기 위해 남겨 두는 것이 좋습니다 .
마지막으로 다른 답변에서 언급했듯이 예외가 발생했을 때 아무것도하지 않는 것이 좋습니다.
try:
    n[i] = 0
except IndexError:
    pass
답변
생각하는 가장 정확하고 가장 정확한 방법 pass은 통역사에게 아무것도하지 말라고 명시 적으로 지시하는 방법입니다. 같은 방법으로 다음 코드를 :
def foo(x,y):
    return x+y
“기능 foo (x, y)를 호출하면 레이블 x와 y가 나타내는 두 숫자를 합한 다음 결과를 되돌려줍니다”,
def bar():
    pass
“함수 bar ()를 호출하면 아무 것도하지 마십시오.”
다른 답변은 매우 정확하지만 자리 표시와 관련이없는 몇 가지 경우에도 유용합니다.
예를 들어, 최근에 작업 한 약간의 코드에서 두 변수를 나눌 필요가 있었고 제수가 0 일 수있었습니다.
c = a / b
b가 0이면 분명히 ZeroDivisionError가 발생합니다. 이 특정 상황에서 b가 0 인 경우 c를 0으로 두는 것이 바람직한 동작이므로 다음 코드를 사용했습니다.
try:
    c = a / b
except ZeroDivisionError:
    pass
덜 표준적인 또 다른 사용법은 디버거에 중단 점을 배치하기에 편리한 장소입니다. 예를 들어, for … in 문의 20 번째 반복에서 디버거로 들어가는 약간의 코드가 필요했습니다. 그래서:
for t in range(25):
    do_a_thing(t)
    if t == 20:
        pass
중단 점을 통과시킵니다.
답변
‘있는 그대로’사용될 수있는 일반적인 유스 케이스는 유형을 작성하기 위해 클래스를 대체하는 것입니다 (예 : 수퍼 클래스와 동일).
class Error(Exception):
    pass
따라서 Error예외를 발생 시키고 포착 할 수 있습니다 . 여기서 중요한 것은 내용이 아니라 예외 유형입니다.
답변
pass파이썬에서는 기본적으로 아무것도하지 않지만 주석과 달리 해석기는 무시하지 않습니다. 따라서 자리 표시자를 만들어서 여러 곳에서 활용할 수 있습니다.
1 : 수업에서 사용 가능
   class TestClass:
      pass
2 : 루프 및 조건문에 사용할 수 있습니다.
   if (something == true):  # used in conditional statement
       pass
   while (some condition is true):  # user is not sure about the body of the loop
       pass
3 : 기능에서 사용될 수 있습니다 :
   def testFunction(args): # programmer wants to implement the body of the function later
       pass
pass프로그래머가 현재 구현을 원하지는 않지만 나중에 사용할 수있는 특정 클래스 / 함수 / 조건문을 작성하려고 할 때 주로 사용됩니다. 파이썬 인터프리터는 공백 또는 구현되지 않은 클래스 / 함수 / 조건문을 허용하지 않으므로 오류가 발생합니다.
IndentationError : 들여 쓰기 블록이 예상되었습니다.
pass 이러한 시나리오에서 사용할 수 있습니다.
답변
pass 는 NOP (No Operation) 작업을 의미 한다고 말할 수 있습니다 . 이 예제 후에 명확한 그림을 얻을 수 있습니다 :-
C 프로그램
#include<stdio.h>
void main()
{
    int age = 12;
    if( age < 18 )
    {
         printf("You are not adult, so you can't do that task ");
    }
    else if( age >= 18 && age < 60)
    {
        // I will add more code later inside it
    }
    else
    {
         printf("You are too old to do anything , sorry ");
    }
}
이제 어떻게 파이썬으로 작성합니까 :-
age = 12
if age < 18:
    print "You are not adult, so you can't do that task"
elif age >= 18 and age < 60:
else:
    print "You are too old to do anything , sorry "
그러나 elif 뒤에 들여 쓰기 블록이 필요했기 때문에 코드에 오류가 발생합니다 . pass 키워드 의 역할은 다음과 같습니다 .
age = 12
if age < 18:
    print "You are not adult, so you can't do that task"
elif age >= 18 and age < 60:
    pass
else:
    print "You are too old to do anything , sorry "
이제 나는 당신에게 분명하다고 생각합니다.
