5

私は Python の初心者で、現在「How to Think like a Computer Scientist」という本で自己学習しています。Chained Conditionals に関する本の演習から、Syntax は次のように教えられました。

 def function(x,y)
   if ..:
      print ".."
   elif..:
      print ".."
   else:
      print".."

ただし、これが合法かどうかを調べるためにこれを試したところ、うまくいきました:

 def function (x,y)
   if ..:
     print ".."
   if ..:
     print ".."

後者は正しい構文ですか?それとも、チェーンされた条件とは見なされませんか? これがPythonで合法であるとしても、コードを書くのは「良い方法」ですか?

すべての親切な助けに心から感謝します。

4

2 に答える 2

13

2 番目の例は機能していますが、最初の例と同じではありません。if2 番目では、前の条件が true で実行されたかどうかに関係なく、すべての条件が評価されます。チェーンのif/elif例では、すべてが 1 つの単位として扱われ、最初に一致した条件のみが実行されます。

例えば:

# An if/elif chain
a = 2
b = 3

if a == 2:
  print "a is 2"
elif b == 3:
  print "b is 3"
else:
  print "whatever"

# prints only
"a is 2"
# even though the b condition is also true.

でも

# Sequential if statements, not chained
a = 2
b = 3

if a == 2:
  print "a is 2"

if b == 3:
  print "b is 3"

# prints both
"a is 2"
"b is 3"
于 2012-05-03T14:10:40.563 に答える
4

2 番目のバリアントを連鎖条件とは呼びません。これは、一連の (おそらく関連のない)ifステートメントです。

主な違いは、最初のバリアントでは常に 1 つprintのステートメントのみが実行されるのに対し、2 番目のバリアントでは複数のprintステートメントが実行される可能性があることです。

于 2012-05-03T14:10:52.013 に答える