Python 一种语句,其缩进与其前面的“;如果;语句将始终被执行?

Python 一种语句,其缩进与其前面的“;如果;语句将始终被执行?,python,Python,我正在参加一个关于Python的在线课程 if <TestExpression>: <block> i=21 与以下代码(“代码3”)相同: 这与他之前所说的不矛盾吗i=21和code2中的return b与之前的if语句具有相同的缩进,但是为什么无论测试表达式是真是假,i=21都将始终执行,而return b将仅在测试表达式(a>b)为假时执行 如何确定紧跟在与if行缩进相同的if构造之后的语句是否应该执行?换句话说,您如何确定该语句是否属于if构造的一部分?

我正在参加一个关于Python的在线课程

if <TestExpression>:
    <block>
i=21
与以下代码(“代码3”)相同:

这与他之前所说的不矛盾吗i=21和code2中的
return b
与之前的
if
语句具有相同的缩进,但是为什么无论测试表达式是真是假,
i=21
都将始终执行,而
return b
将仅在测试表达式(a>b)为假时执行


如何确定紧跟在与
if
行缩进相同的
if
构造之后的语句是否应该执行?换句话说,您如何确定该语句是否属于
if
构造的一部分?

这是因为您不能从函数返回两次。当
满足时,它将返回,不再执行任何语句。因此,无法访问下一个
return
语句

下一个
返回
仅在
失败时执行<如果
失败,则当
时也会执行code>else


这就是为什么你的老师说,他们都是一样的

这是你问的一个很好的问题,很多新人都有这个问题

问题在于
return
关键字。在函数中,当它
返回值时,函数立即中断。因此,不会运行函数中的后续代码。因此,我们可以将条件语句简写为:

if a > b:
    return a
    # Function breaks here - no more code is executed.
# This bit is never reached if a is returned
return b

注意:

def test():
    if 10 > 5:
        print("Hello!")
        return True
    print("Hi!")
    return False
当我们调用
test()
时,只有
您好已打印


这很有用的一个原因是,在Python中有多个条件语句时,可以阻止错误的空格。当然,在大多数其他编程语言中,因为空白不是一种特性,所以它不是必需的

假设您正在编写一个函数来检查一个数字是否为素数,其中需要很多条件语句。(当然,就本例而言,这并不高效):

知道
返回
会破坏函数,我们可以将其重新编写为:

def is_prime(n):
    if n == 1:
        return False
    if n == 2:
        return True:
    for i in range(2, n):
        if n % i == 0:
            return False # A factor exists
    return True

看到缩进是如何变得如此干净了吗?

区别在于您使用了函数。如果它到达一个
return
语句,那么不管后面是什么,函数都会立即返回(停止)。
def test():
    if 10 > 5:
        print("Hello!")
        return True
    print("Hi!")
    return False
def is_prime(n):
    if n == 1:
        return False
    else:
        if n == 2:
            return True
        else:
            for i in range(2, n):
                if n % i == 0:
                    return False # A factor exists
                else:
                    continue
            return True
def is_prime(n):
    if n == 1:
        return False
    if n == 2:
        return True:
    for i in range(2, n):
        if n % i == 0:
            return False # A factor exists
    return True