bestsource

"통과" 문을 어떻게 사용합니까?

bestsource 2023. 5. 9. 22:52
반응형

"통과" 문을 어떻게 사용합니까?

저는 파이썬을 배우고 있는 중이며 다음에 대한 섹션에 도달했습니다.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

요하자면약,면자▁to,pass문은 특별한 기능을 하지 않지만 여기에 설명된 것처럼 자리 표시자 역할을 할 수 있습니다.

은 (Python 이후) 코드가 사항을 .if,except,def,class등)은 비워 둘 수 없습니다.그러나 빈 코드 블록은 다양한 상황에서 유용합니다. 예를 들어 아래의 예를 들어 가장 자주 사용하는 사용 사례입니다.

일도 , 그므로블아코, 서무일도일한않다면아야지드나어록에러,▁therefore,pass그러한 블록이 생성되지 않기 위해 필요합니다.IndentationError 모든):Ellipsis문자 그대로의...할 수 , " " " " " (docstring " (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
    

    대신에 대최을사용니다합한소신▁at▁least다▁instead니합▁using용대except Error: 이 에는 가급적이면 또는이경가급적는에우가급적▁orably▁in는또에.except OSError:훨씬 더 나은 연습으로 간주됩니다. 전체 의 10% except ...: pass문은 모든 예외를 포착하므로 파이썬 프로그래밍에서 여전히 자주 사용되는 패턴입니다.

  • 새 동작을 추가하지 않는 예외 클래스 도출(: SciPy):

     class CompileError(Exception):
         pass
    

    마찬가지로 추상 기본 클래스로 의도된 클래스는 종종 명시적으로 비어 있습니다.__init__ 하위 파생되어야 또하위클예도하다야방는른법해출가래스는예▁that방(법다:른▁or▁methodse는하▁(class▁otheres▁sub)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은 블록의 유일한 것으로 실행되어야 하는 의무문으로 이미 준비되어 있는 경우가 많습니다.이러한 경우, 블록은 다음을 포함할 수 있습니다.pass 를 들어, "이것은 정말 아무것도 할 의도가 없다."라고 말하기 위한 문서 문자열 에.pebl:

     class ParsingError(Exception):
         """Error encountered while parsing an ill-formed datafile."""
         pass
    
  • 어떤경는에우,,pass는 자리 표시자로 사용되어 "이 메서드/클래스/if-block/...아직 구현되지 않았지만, 저는 개인적으로 그것을 하는 장소가 될 것입니다."Ellipsis문자 그대로의...이전 예제에서 이것과 의도적인 "no-op"을 엄격히 구별하기 위해. (Elipsis 리터럴은 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이는 특히 다음 두 가지 경우에 유용합니다."이 추상 메서드는 모든 하위 클래스에서 구현되어야 하며기본 클래스에서 정의할 일반적인 방법이 없습니다." 또는 "이 이름을 가진 이 함수는 이 릴리스에서 아직 구현되지 않았지만 서명은 다음과 같습니다.")

되지 않은 기능에 대한 하는 것 에도, 구되지않기위은자한것외사도에는용하표로,pass문을 할 수 (". if-else 문성는하데명유수있용다할니습낫다을것보다인인암것적이시시적작)."")"▁implicit▁better명▁can▁than▁("-if)expl낫다icit▁is-▁be▁filling니▁if▁out▁anel습(▁statement용시▁in▁useful").")

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

는 "내가 함수 막대()를 호출하면 절대 아무것도 하지 마십시오."를 의미합니다.

다른 답들은 꽤 정확하지만, 자리잡기와 관련이 없는 몇 가지 경우에도 유용합니다.

예를 들어, 제가 최근에 작업한 코드에서, 두 변수를 나누는 것이 필요했습니다. 그리고 제수가 0이 되는 것이 가능했습니다.

c = a / b

b가 0이면 분명히 0분할 오류가 발생합니다.이 특정 상황에서 c를 0으로 두는 것은 b가 0인 경우에 바람직한 동작이었기 때문에 다음 코드를 사용했습니다.

try:
    c = a / b
except ZeroDivisionError:
    pass

또 다른 덜 표준적인 사용법은 디버거를 위한 중단점을 제공하는 편리한 장소입니다.예를 들어, 저는 의 20번째 반복에서 디버거에 침입할 코드를 원했습니다...진술서에그래서:

for t in range(25):
    do_a_thing(t)
    if t == 20:
        pass

브레이크 포인트를 통과한 상태에서.

'있는 그대로' 사용할 수 있는 일반적인 사용 사례는 클래스를 재정의하여 유형을 만드는 것입니다.

class Error(Exception):
    pass

그래서 당신은 키우고 잡을 수 있습니다.Error예외의 입니다.여기서 중요한 것은 내용보다는 예외 유형입니다.

passPython에서는 기본적으로 아무 것도 하지 않지만 주석과 달리 인터프리터에 의해 무시되지 않습니다.따라서 플레이스 홀더로 만들어 여러 곳에서 이 기능을 활용할 수 있습니다.

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): # The programmer wants to implement the body of the function later
    pass

pass대부분은 프로그래머가 현재 구현을 제공하지 않지만 나중에 사용할 수 있는 특정 클래스/함수/조건부 문을 만들기를 원할 때 사용됩니다.Python 인터프리터는 비어 있거나 구현되지 않은 클래스, 함수 또는 조건문을 허용하지 않으므로 다음 오류가 발생합니다.

들여쓰기 오류: 들여쓰기된 블록이 필요합니다.

pass이러한 시나리오에서 사용할 수 있습니다.

패스는 NOP(작동 없음) 작업을 의미한다고 할 수 있습니다.다음 예제를 사용하면 명확한 그림을 볼 수 있습니다.

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 ");
    }
}

이제 Python으로 작성하는 방법:

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 "

하지만 당신의 코드는 eliff 후에 들여쓰기된 블록이 필요했기 때문에 오류를 줄 것입니다.다음은 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 "

이제는 잘 알 것 같군요.

솔직히, 는 공식적인 파이썬 문서가 그것을 꽤 잘 설명하고 몇 가지 예를 제공한다고 생각합니다.

암호문은 아무 것도 하지 않습니다.구문적으로 문이 필요하지만 프로그램에서 작업이 필요하지 않을 때 사용할 수 있습니다.예:

>>> while True: ... pass # Busy-wait for keyboard interrupt (Ctrl+C) ...

이는 일반적으로 최소 클래스를 만드는 데 사용됩니다.

>>> class MyEmptyClass: ... pass ...

다른 플레이스패스는 새로운 코드를 작업할 때 함수 또는 조건부 본문에 대한 플레이스홀더로 사용할 수 있으며, 보다 추상적인 수준에서 계속 생각할 수 있습니다.패스는 자동으로 무시됩니다.

>>> def initlog(*args): ... pass # Remember to implement this! ...

모듈이 있는 경우 모듈을 가져오고 모듈 가져오기를 무시하려면 해당 모듈이 없는 경우 다음 코드를 사용할 수 있습니다.

try:
    import a_module
except ImportError:
    pass
# The rest of your code

암호문 작성을 피하고 나머지 코드를 계속 작성하면 예외 블록을 연 후 줄이 들여쓰기되지 않으므로 들여쓰기 오류가 발생합니다.

책에서 말했듯이, 나는 그것을 임시 자리 표시자, 즉,

# code that does something to to a variable, var
if var == 2000:
    pass
else:
    var += 1

그리고 나서 나중에 시나리오를 작성합니다.var == 2000.

"나는 여기에 아무것도 가지 않았으면 좋겠어"라는 "주요" 사용 외에도, 여기 제가 방금 찾은 것이 있습니다, 가정하면.gen입니다.Iterator:

i = 0
obj = None

for i, obj in enumerate(gen):
    pass

하면 개체인 마막개가져니다옵를체를 얻을 수 .yield서에에서 .gen 의길와의 .gen모두 한 패스에. (a와 유사한 소르타.whileC에서 세미콜론으로 끝나는 루프, 생각해보니.)

패스는 보통 게임이나 그런 종류의 게임을 디자인하기 위해 코드를 작성할 때 도움이 됩니다. 이제 코드를 진행할 때, 당신은 앞으로 나아가고 싶지 않은 몇 가지 기능이 있다는 것을 깨닫게 될 것이고, 코드를 건드리지 않고 더 나아가서 나중에 기능을 다시 방문하고 싶지만, 그렇게 함에 따라, 그렇게 함에 따라,컴파일러는 분명히 인식되지 않고 다른 모든 종류의 것들이 인식되지 않는다고 말하는 오류를 던질 것입니다!이 상태에서는 컴파일러가 단순히 함수를 무시하고 코드를 더 진행할 수 있도록 패스를 사용합니다!!

예를 들어 -

if __name__ = "__main__":
pass
print("Hello World!")

여기서 컴파일러는 if name 부분을 무시하고 지시대로 헬로 월드를 인쇄할 것입니다!

감사합니다!

먼저, 블록을 작성하려면 다음과 같이 하십시오.

if statement:
    pass
for i in range(abc):
    pass
def func():
    pass

그리고.pass자리 표시자가 될 수 있습니다.

와 ' 수 과 같이 하고 때: IDE는 IDE와 '소통'할 수 있습니다. IDE가 다음과 같이 들여쓰기를 줄이도록 하려면:
프로그램이 여기에 기록된 경우:

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        # cursor in there

이제 들여쓰기 수는 2개이지만 다음 줄에는 1개가 필요합니다.a를 입력할 수 있습니다.pass그리고 당신의 프로그램은 다음과 같습니다.

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        pass# cursor in there

그리고 돌아옵니다.그것은 당신을 행복하게 해줄 것입니다.

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        pass
    # cursor in there

이제 들여쓰기 카운트는 1입니다.

패스는 공허함의 표시 코드일 입니다.

를 들면, 들면를예,pass 빈 데 됩니다.

class Test:
    pass

def test():
    pass

하지만, 클래스나 함수가 정말로 아무것도 가지고 있지 않다면.pass아래와 같이:

class Test:
    # pass

def test():
    # psss

아래와 같은 오류가 있습니다.

구문 오류: 구문 분석 중 예기치 않은 EOF

아까, 그고전에말이듯했리,이▁and듯말했전에,.pass 곳의 표시 코드일 뿐이므로 다음 코드가 있을 경우pass코드는 다음과 같이 작동합니다.

class Test:
    pass
    x = "Hello World"

def test():
    pass
    return "Hello World"

print(Test.x) # Hello World
print(test()) # Hello World

Python의 pass 문은 구문적으로 문이 필요하지만 명령이나 코드를 실행하지 않을 때 사용됩니다.

패스 문은 null 작업이므로 실행 시 아무 일도 발생하지 않습니다.이 패스는 코드가 최종적으로 이동하지만 아직 작성되지 않은 위치(예: 스텁)에서도 유용합니다.

예:

#!/usr/bin/python

for letter in 'Python':
   if letter == 'h':
      pass
      print 'This is pass block'
   print 'Current Letter :', letter

print "Good bye!"

그러면 다음과 같은 결과가 생성됩니다.

Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!

문자 값이 'h'인 경우 이전 코드는 문 또는 코드를 실행하지 않습니다.암호문은 코드 블록을 만들 때 유용하지만 더 이상 필요하지 않습니다.

그런 다음 블록 내부의 문을 제거할 수 있지만, 코드의 다른 부분과 간섭하지 않도록 블록을 통과 문으로 유지할 수 있습니다.

패스는 그냥 무시하는 것을 말합니다.지정된 조건이 true이고 다음 이 통과되면 해당 값이나 반복을 무시하고 다음 행으로 진행합니다.

예:

for i in range (1, 100):
    if i%2 == 0:
        pass
    else:
        print(i)

출력: 1-100의 모든 홀수를 인쇄합니다.

이는 짝수의 계수가 0이므로 숫자를 무시하고 다음 숫자로 진행되기 때문입니다.홀수의 계수가 0과 같지 않기 때문에 루프의 다른 부분이 실행되어 인쇄됩니다.

pass는 Python에서 들여쓰기 오류를 방지하는 데 사용됩니다.

C, C++, Java와 같은 언어를 사용하면 다음과 같은 중괄호가 있습니다.

 if(i==0)
 {}
 else
 {//some code}

그러나 파이썬에서는 중괄호 대신 들여쓰기를 사용하므로 이러한 오류를 방지하기 위해 패스를 사용합니다.

당신이 퀴즈를 치던 중에 기억이 났고,

if(dont_know_the_answer)
    pass

예제 프로그램,

for letter in 'geeksforgeeks':
    pass
print 'Last letter: ', letter

언급URL : https://stackoverflow.com/questions/13886168/how-to-use-pass-statement

반응형