Қолданушы функциялары
Өткен екі сабақта процедура мен параметрді үйрендік. Процедура бір нәрсе істейді (мыс. экранға шығарады), бірақ ЕСЕПТЕЛГЕН НӘТИЖЕНІ ешкімге бермейді. Ал егер сол нәтижені кейін басқа жерде ПАЙДАЛАНҒЫҢ келсе ше? Дәл осы үшін функция бар — ол әрекет орындап қана қоймай, нәтижені «қолыңа ұстатады».
Функция — процедура сияқты, аргументтерді қабылдай алатын көмекші алгоритм. Ол үш бөліктен тұрады: атауы, аргументтері (параметрлері) және функция денесі.
def testfunc(myname):
print('Salem, %s' % myname)
testfunc('Samal') Функцияның процедурадан айырмашылығы — функция ӘРҚАШАН нәтижелік мәнді қайтарады (сан, символ немесе басқа объект түрі). Шақырылған функцияның нәтижесі дәл сол шақыру нүктесіне қайтарылады.
return оператoры: 1) оң жағындағы өрнекті есептейді; 2) функцияның орындалуын ТОҚТАТАДЫ; 3) есептелген мәнді функция нәтижесі ретінде қайтарады.
Python-да көптеген дайын (кіріктірілген) функциялар бар: символдармен жұмыс істейтіндер — ord(), chr(), len(); математикалық — abs(), round(), pow(), max(), min(), sum().
Берілді: N саны.
Табу керек: N-нің жай немесе құрама сан екенін анықтайтын функция.
import math
def jaisan(K):
p = 0
for i in range(2, round(math.sqrt(K))):
if K % i == 0:
p = 1
if p == 0:
print('jai san')
else:
print('qurama san')
return
N = int(input('Sandy engiz='))
if N == 4 or N == 6:
print('qurama san')
else:
jaisan(N) Жауабы: N=73 үшін — jai san.
Берілді: K, X, Y сандары.
Табу керек: әр санның цифрларының қосындысын шығаратын функция.
Неге бір ғана функция жеткілікті? Функция параметр қабылдайтындықтан, оны K, X, Y-ге АЛМА-КЕЗЕК шақыруға болады — әр санға жеке функция жазудың қажеті жоқ.
def sumDigits(n):
sum = 0
while n != 0:
sum += n % 10
n = n // 10
return sum
K = int(input('K='))
print(K, ' ziflar kosindisy=>', sumDigits(K)) Жауабы: K=685 → 19; X=9574 → 25; Y=34153 → 16. Қайтарылған мәнді sumDigits(K) + 100 секілді кез келген өрнекте де қолдануға болады.
def Max(m, k, p):
max_val = m
if max_val < k:
max_val = k
if max_val < p:
max_val = p
return max_val
a = int(input('a='))
b = int(input('b='))
c = int(input('c='))
print('En ulkeni=>', Max(a, b, c)) Max пен max екі БӨЛЕК атау. Егер функцияны Max деп анықтап, оны шақырғанда кіші әріппен max(...) деп жазсаң, сенің жазған функцияң емес, Python-ның ӨЗ дайын max() функциясы шақырылады!Python-да қызық ерекшелік бар: функция атауы — функцияның адресін қамтитын ЖАЙ ҒАНА айнымалы. Мұны басқа айнымалыға меншіктеп, сол арқылы функцияны БАСҚА АТПЕН шақыруға болады:
def summa(a, b):
return a + b
F = summa
X = F(5, 12) # функцияны басқа атпен шақырамыз Тіпті функция атауын БАСҚА функцияға аргумент ретінде де беруге болады:
def summa(a, b):
return a + b
def func(f, x, y):
return f(x, y)
z = func(summa, 10, 3) # summa-ны аргумент ретінде береміз Функция параметрі ӘДЕПКІ (үнсіз келісім бойынша қабылданатын) мәнге ие бола алады — егер шақырғанда сол параметр берілмесе, әдепкі мән қолданылады:
def summa(a, b=4):
return a + b
X = summa(3) # b орнына әдепкі 4 қойылады → X=7
Y = summa(35, 28) # параметр мәні 28-ге тең → Y=63 y), ал шақырғанда да ол берілмесе — Python қате (TypeError) шығарады. Мысалы, def func(x, y, z=15) анықтамасында func(48, z=35) деп шақыру ҚАТЕ береді, себебі y-ге ешқандай мән берілмеген.Соңында — Python-ның ерекше құралы:
Лямбда-функция — атауы алдын ала анықталмай, бір жолда құрылатын шағын функция. Жазылу форматы:
lambda аргументтер: нәтиже.
# Лямбда-функцияны тікелей өрнекте қолдану:
z = 1 + (lambda x, y: x * y + pow(x, 2) + pow(y, 2))(1, 3) ** 2 Лямбда-функция көбіне «бір реттік», өте қысқа функция керек болғанда, оған бөлек атау беріп жатпай қолданылады.
return-ды дұрыс қолдану — ЕНТ-те жиі кездесетін код-талдау есептері.
return арқылы), процедура — керісінше, тек әрекет орындайды.Max пен max екі бөлек атау.TypeError болады.- Функция — процедурадан айырмашылығы, ӘРҚАШАН
returnарқылы нәтиже қайтарады. - Функция атауы — жай ғана айнымалы, оны басқа айнымалыға меншіктеуге немесе аргумент ретінде беруге болады.
- Параметрге әдепкі мән беруге болады (
b=4), бірақ әдепкісіз параметрге міндетті түрде мән беру керек. - Лямбда-функция — атаусыз, бір жолдық шағын функция (
lambda x, y: ...).