Это хорошая практика кодирования для выполнения операций в блоке «кроме»? - PullRequest
0 голосов
/ 24 марта 2019

Если код в блоке «try» завершается неудачно, это Pythonic способ исправить ошибку в блоке «кроме»?

Я сталкивался с обоими видами фрагментов кода:

import os
import random

workdir = str(random.randint(10**11, 10**12-1))
try:
    os.mkdir(workdir)
except FileExistsError:
    workdir = str(random.randint(10**11, 10**12-1))
    os.mkdir(workdir)
print('Created directory ' + workdir)
os.chdir(workdir)
print('Changed to directory ' + os.getcwd())
import os
import random

workdir = str(random.randint(10**11, 10**12-1))
try:
    os.mkdir(workdir)
    print("Directory " , workdir ,  " created") 
except FileExistsError:
    print("Directory " , workdir,  " already exists")

Один из них предпочтительнее другого?

1 Ответ

1 голос
/ 24 марта 2019

Использование исключений на самом деле является питонским способом. Существует принцип EAFP, который означает «Проще просить прощения, чем разрешения». Вы можете прочитать больше об этом здесь

Второй фрагмент кода выглядит лучше, чем первый, потому что все еще есть шанс сгенерировать то же число.

...