Наконец, всегда запускается непосредственно перед возвратом в блоке try, тогда почему обновление в блоке, наконец, не влPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Наконец, всегда запускается непосредственно перед возвратом в блоке try, тогда почему обновление в блоке, наконец, не вл

Сообщение Anonymous »

Блок Finally выполняется непосредственно перед оператором return в блоке try, как показано в примере ниже — возвращает False вместо True:
>>> def bool_return():
... try:
... return True
... finally:
... return False
...
>>> bool_return()
False

Аналогично, следующий код возвращает значение, установленное в блоке Final:
>>> def num_return():
... try:
... x=100
... return x
... finally:
... x=90
... return x
...
>>> num_return()
90

Однако при назначении переменной без оператора return в блоке Final почему значение переменной, обновленное блоком Final, не возвращается блоком Try? Является ли переменная из блока Final локальной областью действия в блоке Final? Или возвращаемое значение из блока try хранится в буфере памяти и на него не влияет присваивание в блокеfinally? Почему в приведенном ниже примере выводится 100 вместо 90?
>>> def num_return():
... try:
... x=100
... return x
... finally:
... x=90
...
>>> num_return()
100

Аналогично следующему примеру:
In [1]: def num_return():
...: try:
...: x=[100]
...: return x
...: finally:
...: x[0] = 90
...:

In [2]: num_return()
Out[2]: [90]

In [3]: def num_return():
...: try:
...: x=[100]
...: return x[0]
...: finally:
...: x[0] = 90
...:

In [4]: num_return()
Out[4]: 100


Подробнее здесь: https://stackoverflow.com/questions/626 ... te-in-fina
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# Цикл for с try catch наконец
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Java try/catch - наконец-то полезность
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • WPF: В чем разница между try...finally и try..catch..finally в WPF, MVVM? [закрыто]
    Гость » » в форуме C#
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость
  • WPF: В чем разница между try...finally и try..catch..finally в WPF, MVVM? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Производительность Java try/catch, рекомендуется ли сводить к минимуму то, что находится внутри предложения try?
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»