Байланысты: Бөрібаев, Муратова Python тілі негіздері
def printMax(a, b): if a > b:
print(a, 'максималды') elif a==b: print(a, 'тең', b) else: print(b, 'максималды') printMax(3,4) # мәндерді тікелей меншіктеу x = 5 y = 7
printMax(y, x) # айнымалыларды аргумент ретінде беру Нәтижесі:
$ python func_param.py
4 максималды
7 максималды
Осы программаның жұмыс істеу жолын қарастырайық. Бұл жерде біз printMax деген аты бар функцияны анықтадық. Ол а және b деген аты бар екі параметрді пайдаланады. Қарапайым if..else операторын қолдана отырып үлкен санды табамыз. printMax функциясын бірінші per шақырған кезде біз сандарды аргумент ретінде тікелей береміз. Екінші жағдайда біз айнымалылары бар функцияны аргумент ретінде шақырамыз. printMax(x, у) х аргументінің мәнін а параметріне меншіктейді, ал у аргументінің мәнін b параметріне меншіктейді. Екі жағдайда да printMax функциясы бірдей жұмыс істейді.
Айнымалыларды функция ішінде жариялаған кезде олар функцияның сыртындағы басқа айнымалылармен ешқандай байланыста болмайды, ягни айнымалылардың аты функция ішінде локальді болып табылады. Мұны айнымалының көріну аймағы деп атайды. Барлық айнымалылардың көріну аймағы өздері жарияланған блокпен шектеледі және атын атаудан басталады. Мысалы: х = 50 def func(x):
print('x = ', x) x = 2
print('Локальді х-ті ауыстыру', x) func(x)
print('x бұрынғыша', x) Нәтижесі:
$ python func local.py х тең 50
Локальді х-ті ауыстыру 2 х бұрынғыша 50
Осы программаның жұмыс істеу жолын қарастырсақ, X аты меншіктелген мәнді бірінші рет шығарғанда, функцияның бірінші жолында Python функцияны аныктаудан жоғарыдағы, негізгі блокта жарияланған параметрдің мәнін пайдаланады. Одан кейін біз х-ке 2 мәнін меншіктейміз. Олардың аты біздің функциямыз үшін локальді болып табылады. Функцияның ішіндегі х мәнін ауыстырған кезде негізгі блокта жарияланған х өзгеріссіз қалады. Print арқылы функцияны соңғы шақырған кезде біз негізгі блокта көрсетілген х-тің мәнін шығарамыз. Локальді өзгеріс кезінде өзгермей, ол алдыңғы шақырылған функциядағы мәнінде қалғанын осылай дәлелдейміз.
Локальді функцияның кейбір ерекшеліктеріне мән беру керек:
локальді айнымалылар тек қана функция денесінің ішінде ғана өмір сүреді. Функцияның сыртындағы программалық код оған жете алмайды; егер глобальді функциянікімен бірдей локальді функцияның аты айтылмаған болса, онда, функция денесінде бола тұрып функция денесіің сыртында жарияланған айнымалыларға қол жеткізе аламыз; егер біз жариялаған локальді айнымалы аты глобальді айнымалы атымен бірдей болып шықса, онда локальді айнымалы глобальді айнымалыны жасырып көрсетпей қояды.
COSTANT = 2 def sometime (n1, n2): a = n1 * COSTANT b = n2 / COSTANT return a, b
Осында біз COSTANT глобальді айнымалысын және а және b айнымалылары бар sometime функциясын жарияладық. Функция денесінде болған кезде де біз глобальді айнымалыға бара аламыз және жаңа мәнін жаза аламыз:
def otherfime (n1, n2): COSTANT = 3 a = n1 * COSTANT b = n2 / COSTANT return a, b
функцияның кейбір параметріне үнсіз келісім бойынша мән бере аламыз. Параметр осы мәнге функцияны шақырған кезде көрсетілмеген болған жагдайда ие болады. Үнсіз келісім бойынша берілетін мән = белгісі көмегімен жазылып көрсетіледі. Мысалы:
def sometime (n1, n2 = 3) : return n1 * 2, n2 / 2
Мұның синтаксисі айнымалыны жариялағанға ұқсайды. Егер енді функцияның екінші параметрін көрсетпей шақыратын болсақ, ол үнсіз келісім бойынша берілетін мәнге ие болады:
somefunc (4)
Үнсіз келісім бойынша берілетін мән ондай мән жоқ параметрден кейін жазылады. Оны орындамаған жағдайда қателік туралы хабарлама пайда болады. Мысалы:
def somefunc (n2 = 3, n1): return n1 * 2, n2 / 2
Бұл программа орындалмайды.
Атаулы параметрлерді қолдану өте ыңғайлы – олардың атын және үнсіз келісім бойынша берілетін мәнді жаттап алу жеткілікті.
Операторлармен бірге өрнектерде мәндерге күрделі амалдар орындайтын функциялар белсенді түрде қолданылады. Round функциясы санды дөңгелектеу қызметін орындайды. Егер round (1. в) • деп көрсетсек, жүзіп жүретін нүктеге дейін санды дөңгелектейді.
Функцияның екі ерекшелігі бар. Біріншіден, функция өңдейтін мәндер функциядан кейін жақшаның ішіне жазылады. Параметрлері бірнешеу болса, олар үтірмен ажыратылады:
Somefunction (1,2, 345)
Мұнда гипотетикалық функцияға бірден үш мәнді жүктедік. Кейбір функцияларда параметрлердің аты да жазылады:
Otherfunction (arg1 = 10, arg2 = 20). Мұнда екі параметрдің де аты берілген.
Екіншіден, операторлар бір нәтиже беретін болса, функциялар бірнеше нәтиже беруі мүмкін. Оның пайдасы да бар.
Функцияларды деректер қорындағы қайталанатын есептеулер үшін қолданғанда, жоғарыда аталған ерекшеліктеріне мән берген жөн.