Функсия бо истисно дар Python
Истисноҳо хеле боқулак партофта мешаванд, дар функсияҳо бо истифода аз шартҳо навишта шаванд.
Биёед функсияи get_sum созем,
ки ҳамаи унсурҳои рӯйхатро фақат дар сурате ҷамъ мекунад,
ки дарозии рӯйхат хурд ё баробар бо 3 бошад.
Дар акси ҳол, бигзор истиснои мо ToBigLength партофта шавад:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Ҳоло рӯйхатро ба функсияи get_sum гузаронем
ва натиҷаро дар консол чоп кунем:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # 6-ро чоп мекунад
Инчунин дар функсияҳо мумкин аст чанд намуди истисноро дастгирӣ кардан.
Биёед як синфи дигари истисно ToSmallLength созем:
class ToSmallLength(Exception):
pass
Ҳоло дар функсия шартеро нависем, агар
дарозии рӯйхат ба сифр баробар бошад, пас бигзор ToSmallLength партофта шавад.
Агар ягон истисно дастгирӣ нашавад, пас бигзор ҳамаи унсурҳои рӯйхат ҷамъ шаванд:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Барои осонӣ, рӯйхатеро, ки ба параметри функсия мегузарад,
худ функсия ва фарохониашро дар блоки try қарор додан мумкин аст.
Ва дастгирии ду истиснои моро дар блокҳои except ҷойгир кунем:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Функсияе созед, ки параметраш адад қабул мекунад.
Дар он шартҳоро нависед,
агар адад манфӣ ва ба сифр баробар бошад, пас
бигзор истисноҳои мувофиқ партофта шаванд.
дар акси ҳол бигзор адад ба 3 зарб карда шавад.
Коркарди функсияи сохтаи худро бо
йӯрии сохтмони try-except санҷед.
Дар ин ҳол инчунин истисноҳои худро дастгирӣ кунед.