如果满足条件,是否检查if-elif更改值?

时间:2019-07-06 12:03:35

标签: python if-statement

我正在努力解决这个问题,并且非常有信心以下内容会引起问题。寻找确认

if row['High'] < sl_c:    # Check if SL is being hit
    sl_ci = row['Low'] + sl
    # sl_ci = row['High'] - sl  # chenge sl which is being looked for.
    if sl_ci < sl_c:  # Verify sl_ci is greater than current
          sl_c = sl_ci
          buy_l[key].at[e, 'sl'] = sl_c  # Input sl to dfent
          buy_l[key].at[e, 'sltime'] = row['Time']  # Input time of sl modification
          # buy_l[key].at[e,'sl'] = sl_c
elif row['High'] > sl_c:  # If SL is hit
     buy_l[key].at[e,'Buy'] = sl_c  # input the sl_c as exit
     buy_l[key].at[e, 'CloseTime'] = row['Time'] # input the time of exit

正如您所看到的,在第一条sl_c语句中正在检查if,而嵌套的if在第二条条件sl_ci中对其进行了检查。当两个条件都满足时,我们将更改一个特定值。

elif正在检查sl_c,我认为上面已经对其进行了修改,并可能基于新值满足/拒绝条件?

这可能更清楚

if x == -1:
     y= -2
   if y < x:
      x=y
elif x<-1:      # Will the value be checked even though above if condition is met? 
                # if it will be, then will the x value being checked be -2?

4 个答案:

答案 0 :(得分:0)

elif的条件永远不会被评估,因为第一个if被命中了。 elif就像嵌套的else: ... if:

我们可以通过将其更改为具有副作用的函数来稍微修改您的原始示例,以确保永远不会评估该条件:

def bool_func_with_side_effect(x):
    print("INSIDE FUNC! x:", x)
    return x<-1

x = -1
if x == -1:
    print("inside if #1")
    y=-2
    if y < x:
        print("inside if #2")
        x=y
elif bool_func_with_side_effect(x):
    print("inside elif")

输出(毫不奇怪):

inside if #1
inside if #2

答案 1 :(得分:0)

否,一旦与elif部分中的条件匹配,就不会在if部分中检查该值。

这是控制流程。如果条件在第一个if中不匹配,则它将检查elif中的条件。这些条件中的任何一个为真并且程序进入该块时,将不检查其余条件。

但是,如果您也想检查条件elif,则必须使用另一个if语句。

答案 2 :(得分:0)

不会检查elif条件。一旦if条件被评估为true,就会跳过elif条件。

答案 3 :(得分:0)

仅当'if'条件返回false时,Python才会检查'elif'或'else'条件。如果第一个条件(“ if”条件)返回true,它将忽略其他条件。