5

我是 Python 的初学者,目前通过“如何像计算机科学家一样思考”这本书自学,从关于链式条件的书中的练习中,教授的语法是:

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

但是,当我尝试这样做以了解其是否合法时,它起作用了:

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

后者是正确的语法吗?或者它甚至不被认为是链式条件?我想知道,即使这在 Python 中是合法的,它是编写代码的“好方法”吗?

真诚感谢所有善意的帮助。

4

2 回答 2

13

尽管您的第二个示例有效,但它第一​​个示例不同。在第二种情况下,if将评估每个条件,无论前一个条件是否为真并执行。在链式if/elif示例中,整个事物被视为一个单元,并且只会执行第一个匹配的条件。

例如:

# 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

我不会将第二个变体称为链式条件。这只是一系列(可能不相关的)if语句。

主要区别在于第一个变体总是只执行一个print语句,而在第二个变体print中可以执行多个语句。

于 2012-05-03T14:10:52.013 回答