提问者:小点点

在Python中try-except-else耦合中else的作用是什么?


所以基本上,if-else耦合的else块只在if条件不满足时才工作,所以它是有必要的。 在for-else耦合和while-else耦合中,当循环由于某种原因无法执行时,它就会执行。 因此,在try-except-else耦合中不使用else是无法完成的。 我的意思是,如果原因是检测是否没有引发异常,我们可以简单地在try块的末尾放一个print语句来实现它。 在try-except-else耦合中,else的关键作用是什么? (大家好!我对编程和StackOverflow也很陌生。但我已经尽量让这个问题与网站的礼仪同步。)


共3个答案

匿名用户

对于else,在python中没有耦合这样的东西。 上面提到的所有构造与else相结合都可以很好地工作,甚至不需要使用else。 您可以使用ifforwhiletry-except,而不使用else。 但是,else在python中的作用是:执行代码,而不是上面方块中的代码。

请注意,在else上面是什么块或者它与谁耦合是与它无关的。 只有在上面的块不是的情况下才会执行。 而由此产生的阻滞可能是重要的,也可能不是重要的,或者是其他手段无法实现的。

匿名用户

因此,在try-except-else耦合中不使用else是无法完成的。

考虑

try:
    a()
except Exception:
    b()
else:
    c()

A。

try:
    a()
    c()
except Exception:
    b()

但如果C()引发exception,则会捕获并运行B()。 我相信这大概就是你在想的。

B。

try:
    a()
except Exception:
    b()
c()

但当A()引发异常时,可能会运行C()

C。

success = False
try:
    a()
    success = True
except Exception:
    b()
if success:
    c()

这在功能上是等价的,但更冗长,更不清晰。 (我们甚至还没有包含finally块。)

try-except-else-finally对于控制捕获错误的范围相当有帮助。

匿名用户

如果在try块中没有发现错误,也会执行else块,但是当缓存错误时,只会执行except块。

因此,如果您有一个方法可以抛出IOError,并且您希望捕获它引发的异常,但是如果try块中的代码第一个操作成功,并且您不希望从该操作中捕获IOError,那么在这种情况下,将使用else块。

try:
    statements # statements that can raise exceptions
except:
    statements # statements that will be executed to handle exceptions
else:
    statements # statements that will be executed if there is no exception

请考虑以下示例:

try:
    age=int(input('Enter your age: '))
except:
    print ('You have entered an invalid value.')
else:
    if age <= 21:
        print('You are not allowed to enter, you are too young.')
    else:
        print('Welcome, you are old enough.')

虽然使用else没有什么意义,因为每次没有异常时,我们也可以在try块中执行任务。

希望这有用!