415

I am in the process of learning Python and I have reached the section about the pass statement. The guide I'm using defines it as being a null statement that is commonly used as a placeholder.

I still don't fully understand what that means though. What would be a simple/basic situation where the pass statement would be used and why would it be needed?

4

15 に答える 15

496

まだ実装したくないいくつかのメソッドを含む新しいクラスを設計しているとします。

class MyClass(object):
    def meth_a(self):
        pass

    def meth_b(self):
        print "I'm meth_b"

を省略したpass場合、コードは実行されません。

次に、次を取得します。

IndentationError: expected an indented block

要約すると、passステートメントは特に何もしませんが、ここに示すようにプレースホルダーとして機能できます。

于 2012-12-14T21:02:09.703 に答える
243
于 2014-03-24T14:51:43.987 に答える
21

考えるための最良かつ最も正確な方法passは、インタプリタに何もしないように明示的に伝える方法です。同様に、次のコード:

def foo(x,y):
    return x+y

「関数 foo(x, y) を呼び出すと、ラベル x と y が表す 2 つの数値を合計し、結果を返す」ことを意味します。

def bar():
    pass

は、「関数 bar() を呼び出しても、何もしない」という意味です。

他の答えは非常に正しいですが、場所保持を伴わないいくつかのことにも役立ちます.

たとえば、私が最近取り組んだコードでは、2 つの変数を除算する必要があり、除数がゼロになる可能性がありました。

c = a / b

b がゼロの場合、明らかに、ZeroDivisionError が生成されます。この特定の状況では、b がゼロの場合、c をゼロのままにしておくことが望ましい動作だったので、次のコードを使用しました。

try:
    c = a / b
except ZeroDivisionError:
    pass

もう 1 つのあまり標準的ではない使用法として、デバッガーのブレークポイントを配置する便利な場所があります。たとえば、for... in ステートメントの 20 回目の繰り返しでデバッガーに侵入するコードが必要でした。そう:

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

パスのブレークポイントで。

于 2014-01-12T21:21:38.603 に答える
10

「そのまま」使用できる一般的な使用例は、型を作成するためだけにクラスをオーバーライドすることです (それ以外はスーパークラスと同じです)。

class Error(Exception):
    pass

したがって、Error例外を発生させてキャッチできます。ここで重要なのは、内容ではなく、例外の種類です。

于 2012-12-14T21:09:06.313 に答える
8

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 インタープリターは、空白または未実装のクラス、関数、または条件ステートメントを許可しないため、エラーが発生します。

IndentationError: インデントされたブロックが必要です

passこのようなシナリオで使用できます。

于 2015-12-10T05:49:39.167 に答える
4

pass ステートメントは何もしません。ステートメントが構文上必要であるが、プログラムがアクションを必要としない場合に使用できます。

于 2015-05-27T13:51:29.437 に答える
1

モジュールが存在する場合はインポートし、そのモジュールが存在しない場合はインポートを無視する場合は、次のコードを使用できます。

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

passステートメントを書かずに残りのコードを書き続けると、except ブロックを開いた後の行がインデントされていないため、IndentationError が発生します。

于 2020-09-05T15:45:49.073 に答える
0

本が言ったように、私はそれを一時的なプレースホルダーとしてのみ使用します。

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

そして、後でシナリオを入力しvar == 2000ます。

于 2012-12-14T21:05:06.307 に答える
-1

Pass は無視することを指します...それは簡単です。指定された条件が true で、次のステートメントがpassの場合、その値または繰り返しを無視して次の行に進みます。

例:

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

出力: 1 から 100 までのすべての奇数を出力します。

これは、偶数のモジュラスがゼロに等しいため、その数を無視して次の数に進むためです。奇数のモジュラスはゼロに等しくないため、ループのelse部分が実行され、出力されます。

于 2019-01-09T18:52:36.410 に答える
-2

pass は、Python でのインデント エラーを回避するために使用されます。

C、C++、Java などの言語を例にとると、次のような中かっこがあります。

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

しかし、Python では中かっこの代わりにインデントを使用するため、このようなエラーを避けるためにpassを使用します。

クイズをしていて思い出した

if(dont_know_the_answer)
    pass

サンプルプログラム、

for letter in 'geeksforgeeks':
    pass
print 'Last letter: ', letter
于 2019-05-19T03:45:04.577 に答える