mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-25 04:24:23 +01:00
Translate Keep trying example
This commit is contained in:
parent
47fa96c31a
commit
83bdff8e33
61
translations/README-ru.md
vendored
61
translations/README-ru.md
vendored
@ -672,3 +672,64 @@ TypeError: unhashable type: 'dict'
|
|||||||
Таким образом, выражение `another_ordered_dict` в `another_set` равно `False`, потому что `ordered_dict` уже присутствовал в `another_set` и, как было замечено ранее, `ordered_dict == another_ordered_dict` равно `False`.
|
Таким образом, выражение `another_ordered_dict` в `another_set` равно `False`, потому что `ordered_dict` уже присутствовал в `another_set` и, как было замечено ранее, `ordered_dict == another_ordered_dict` равно `False`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Продолжай пытаться... *
|
||||||
|
<!-- Example ID: b4349443-e89f-4d25-a109-82616be9d41a --->
|
||||||
|
```py
|
||||||
|
def some_func():
|
||||||
|
try:
|
||||||
|
return 'from_try'
|
||||||
|
finally:
|
||||||
|
return 'from_finally'
|
||||||
|
|
||||||
|
def another_func():
|
||||||
|
for _ in range(3):
|
||||||
|
try:
|
||||||
|
continue
|
||||||
|
finally:
|
||||||
|
print("Finally!")
|
||||||
|
|
||||||
|
def one_more_func(): # Попался!
|
||||||
|
try:
|
||||||
|
for i in range(3):
|
||||||
|
try:
|
||||||
|
1 / i
|
||||||
|
except ZeroDivisionError:
|
||||||
|
# Вызовем исключение и обработаем его за пределами цикла
|
||||||
|
raise ZeroDivisionError("A trivial divide by zero error")
|
||||||
|
finally:
|
||||||
|
print("Iteration", i)
|
||||||
|
break
|
||||||
|
except ZeroDivisionError as e:
|
||||||
|
print("Zero division error occurred", e)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> some_func()
|
||||||
|
'from_finally'
|
||||||
|
|
||||||
|
>>> another_func()
|
||||||
|
Finally!
|
||||||
|
Finally!
|
||||||
|
Finally!
|
||||||
|
|
||||||
|
>>> 1 / 0
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ZeroDivisionError: division by zero
|
||||||
|
|
||||||
|
>>> one_more_func()
|
||||||
|
Iteration 0
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
- Когда один из операторов `return`, `break` или `continue` выполняется в блоке `try` оператора "try...finally", на выходе также выполняется пункт `finally`.
|
||||||
|
- Возвращаемое значение функции определяется последним выполненным оператором `return`. Поскольку блок `finally` выполняется всегда, оператор `return`, выполненный в блоке `finally`, всегда будет последним.
|
||||||
|
- Предостережение - если в блоке `finally` выполняется оператор `return` или `break`, то временно сохраненное исключение отбрасывается.
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user