11

私は実際に開発ブログに Python と Flask を使用しています。言語によっては、else必須ではない場合は明示的に使用することをお勧めしますが、Python でどのように機能するかはわかりません。

ifたとえば、ステートメントが真の場合に何かを返す関数があります。そのため、 The のelse有無にかかわらず、実行は正常に続行されるため、必要ありません。

def foo(bar):
    if not isinstance(foo, list):
        return "an error"
    else: # not necessary 
        return "something"

したがって、次のように使用する必要があります。

def foo(bar):
    if not isinstance(foo, list):
        return "an error"

    return "something"
4

5 に答える 5

6

最初のケースでは、Python はreturn None関数の最後に明示的な を追加しますが、実際には必要ないことがわかります。2番目のケースではそうではありません。

else:私はそこにいることに何の利点も見ません

>>> import dis
>>> def f():
...  if 1>2:
...   return 2
...  return 3
... 
>>> def g():
...  if 1>2:
...   return 2
...  else:
...   return 3
... 
>>> dis.dis(f)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_CONST               2 (2)
              6 COMPARE_OP               4 (>)
              9 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               2 (2)
             15 RETURN_VALUE        

  4     >>   16 LOAD_CONST               3 (3)
             19 RETURN_VALUE        
>>> dis.dis(g)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_CONST               2 (2)
              6 COMPARE_OP               4 (>)
              9 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               2 (2)
             15 RETURN_VALUE        

  5     >>   16 LOAD_CONST               3 (3)
             19 RETURN_VALUE        
             20 LOAD_CONST               0 (None)
             23 RETURN_VALUE        
于 2013-02-13T01:08:07.117 に答える
4

これはすでにここで説明されています:If-Else-Returnまたは単にif-Return?

とにかくマシンがジャンプしなければならないので、本質的に、2つの形式は効率の点で同等です。つまり、コーディングスタイルに要約すると、自分で(またはチームで)それを決定する必要があります。

個人的には、読みやすさのためにelseステートメントを使用することをお勧めします。

于 2013-02-13T00:44:00.073 に答える
1

本当に違いはありません。どちらの方法でも同じことを行います。

コードが 1 行少ないので、私は後者を好みます。

Je préfère cette dernière

于 2013-02-13T00:40:42.780 に答える
1

Chromiumのスタイルガイドから:

リターン後にelseを使用しないでください:

# Bad
if (foo)
  return 1;
else
   return 2;

# Good
if (foo)
  return 1;
return 2;

return foo ? 1 : 2;
于 2015-02-02T01:27:41.027 に答える
0

私はプログラミングにまったく慣れていません。この質問の文脈で、「else」と「elif」のどちらを使用すべきか、たとえばそのようなシナリオでよくわからない場合があることを思い出しました。

1)

if numA < numB:
    print('numA is smaller')
elif numB < numA:
    print('numB is smaller')
else:
    print('both numbers are equal')

2)

 if numA < numB:
        print('numA is smaller')
 elif numB < numA:
        print('numB is smaller')
 elif numA == numB:
        print('both numbers are equal')

私はそれが大きな違いをもたらさないと思いますか、それとも間違っていますか? 他の例では、2 番目のバリアントの方が一般的に「堅牢」であると思います。

于 2013-02-13T01:07:32.357 に答える