Python-da Istiýa Funksiýasy
Istiýalary, funksiýalaryň içinde şertler bilen düzüp, atmak aýratyn amatlydyr.
Geliň, <get_sum> atly bir funksiýa düzeliň,
bu funksiýa diňe sanawyň uzynlygy <3>den kiçi ýa-da deň bolanda
sanawyň elementleriniň jemyny çykarsyn. Beýle bolmadyk ýagdaýda,
biz ýasan <ToBigLength> istisnamyz atylsyn:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Indi <get_sum> funksiýasyna bir sanawy geçirip,
funksiýany konsola çykaralyň:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # 6 çykarar
Şeýle-de, funksiýalarda birnäçe tipdäki istisnalary
ýakalap bolýar. Geliň ýene bir <ToSmallLength>
atly ýagdaý klasyny düzeliň:
class ToSmallLength(Exception):
pass
Indi funksiýada şert düzeliň, eger sanawyň uzynlygy nola deň bolsa,
<ToSmallLength> atylsyn. Eger hiç hili ýagdaý ýakalanmasa,
sanawyň ähli elementleriniň jemi çykarylmaly:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Amatlylygy üçin, funksiýanyň parametrine geçiriler sanawy,
funksiýanyň özi we ony çagyrmagy <try> blogyna goýup
bolar. Iki sany ýagdaýymyzy bolsa <except> bloklarynda ýerleşdireris:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Parametr hökmünde bir san alyp, şol sany çarpan funksiýa düzüň.
Oňa şertleri düzüň, eger san menfi ýa-da nola deň bolsa,
degşilikde ýagdaýlar atylmaly. Beýle bolmadyk ýagdaýda san
<3>e köpeldilmeli.
Ýasan funksiýaňyzyň işini <try-except> gurluşy
bilen barlaň. Bu ýagdaýda-da öz ýagdaýlaryňyzy ýakalaň.