Funktsiyalar va modulli dasturlash kompyuter dasturlashning muhim qismlari hisoblanadi. Ular bizga tushunarli va tushunarli dasturlarni yaratishga yordam beradi. Bu darsda oddiy til va kundalik misollar yordamida funksiyalar va modulli dasturlash nimani anglatishini tushuntirib beradi. Har bir kontseptsiya bosqichma-bosqich tushuntiriladi. Siz funksiyalar nima ekanligini, ularni nima uchun ishlatishimizni va ular bizning kodimizni qanday tartibga solishini va ular bilan ishlashni qiziqarli qilishini bilib olasiz. Shuningdek, biz modulli dasturlash qanday qilib katta muammoni kichikroq, boshqariladigan qismlarga ajratishini o'rganamiz.
Funktsiya bitta vazifani bajaradigan kichik mashinaga o'xshaydi. Dasturlashda funktsiya chaqirilganda ma'lum bir vazifani bajaradigan kod blokidir. Savdo mashinasi haqida o'ylab ko'ring. Pul qo'yganingizda, mashina sizga gazak beradi. Qadamlar (pul qo'yish, gazak tanlash va gazak olish) bu funktsiyaning barcha qismlari.
Funktsiya kirishni oladi, uni qayta ishlaydi va keyin chiqishni qaytaradi. Masalan, agar funktsiya ikkita raqam qo'shsa, u raqamlarni kirish sifatida qabul qiladi va yig'indini chiqish sifatida beradi. Ushbu g'oya san'atda yangi rang olish uchun ikkita rangni qanday aralashtirishga o'xshaydi. Kirishlar ranglar, chiqishlar esa yangi rangdir.
Har bir funktsiya bir nechta muhim qismlarga ega:
Misol uchun, salom deb nomlangan oddiy funksiya kirish sifatida nom olishi va samimiy salomlashishni qaytarishi mumkin. Funktsiyadagi qadamlar xuddi sendvich tayyorlash kabi ishlaydi: siz ingredientlarni tanlaysiz, ularni aralashtirasiz va keyin sendvichdan zavqlanasiz.
Keling, bir misolni ko'rib chiqaylik. Aytaylik, siz odamni nomi bilan kutib oladigan funktsiyani xohlaysiz. Funktsiya qanday ko'rinishi mumkin:
def salom(ism): "Salom, " + nom + "!"
Ushbu funktsiyada:
Modulli dasturlash katta muammoni kichikroq, yechish oson bo‘lgan qismlarga ajratishdir. Dasturning har bir qismi alohida modul yoki funksiya sifatida tuzilgan. Shunday qilib, dastur boshqotirmaga o'xshaydi, unda har bir qism butun rasmni shakllantirish uchun bir-biriga mos keladi.
Tasavvur qiling, siz LEGO qal'asini qurmoqchisiz. Bir vaqtning o'zida butun qal'ani qurish o'rniga, siz minoralar, devorlar va eshiklarni alohida qurasiz. Keyinchalik, siz to'liq qal'ani yaratish uchun ushbu qismlarga qo'shilasiz. Dasturlashda modulli dasturlash LEGO qismlari bilan qurishga o'xshaydi. Har bir qism (funktsiya yoki modul) o'z ishini bajaradi.
Funktsiyalar va modulli dasturlashdan foydalanish uchun ko'p sabablar mavjud:
Ushbu g'oyalar dasturchilarga murakkab muammolarni hal qilishda va yirikroq loyihalarni sodda tarzda qurishda yordam beradi.
Bu erda sizga turli funktsiyalar va ularning qanday ishlashini ko'rsatadigan ko'proq misollar mavjud.
Bu funksiya ikkita raqamni qo'shadi. Bu sehrli qutiga o'xshaydi, u ikkita raqamni oladi va sizga ularning summasini beradi.
Masalan, 3 va 2 ni qo'yish natijada 5 ni beradi. Quyidagi kodga qarang:
def qo'shish (a, b): a + b qaytaring
Bu funksiya ikkita raqamni birlashtirish kerak bo'lganda yordam beradi. Ikki xil rangni aralashtirib, yangi rang hosil qilgandek, bu yerda siz ikkita raqamni aralashtirib, ularning umumiy miqdorini olasiz.
Bu funksiya raqamning toq yoki juft ekanligini bildiradi. Juft sonni 2 ga teng bo'lish mumkin, toq sonni esa bo'lmaydi.
Tasavvur qiling, sizda bir savat olma bor. Agar siz olmalarni juft-juft qilib qo'yishga harakat qilsangiz va bitta olma qoldirilgan bo'lsa, unda bu raqam toq bo'ladi. Funktsiya oddiy test kabi ishlaydi:
def check_number(son): agar son % 2 == 0 bo'lsa: "juft" ni qaytarish boshqa: "g'alati" ni qaytarish
Raqamni kiritganingizda, funksiya modul operatori yordamida tekshirishni amalga oshiradi (bo'lingandan keyin qolgan qismini topadi). Agar 2 ga bo'linganda qoldiq nolga teng bo'lsa, u "juft" ni qaytaradi; aks holda, u "g'alati" ni qaytaradi.
Bu funksiya kirish sifatida nom oladi va moslashtirilgan salomni qaytaradi. Misol uchun, agar siz "Elis" ismini qo'ysangiz, natijada "Salom, Elis!"
def create_greeting(ism): "Salom, " + nom + "!"
Ushbu oddiy misol funksiyalardan do'stona xabarlarni yaratish uchun qanday foydalanish mumkinligini ko'rsatadi. Har bir funktsiya chaqiruvi xuddi eshik qo'ng'irog'ini chalish va iliq kutib olish kabi ishlaydi.
Modulli dasturlashda siz ko'pincha boshqa funktsiyalar ichidagi funktsiyalardan foydalanasiz. Bu "funktsiya tarkibi" deb ataladi. Bu turli xil ingredientlardan foydalangan holda sendvich qurishga o'xshaydi.
To'liq ovqatlanishni yaratadigan dasturni ko'rib chiqing. Sizda salat va sendvich tayyorlash uchun alohida funksiyalar bo'lishi mumkin. Keyin, boshqa funktsiya bu funktsiyalarni to'liq ovqatlanish uchun chaqiradi.
def make_salad(): "Yangi salat" ni qaytarish def make_sandwich(): "Mazali sendvich" ni qaytarish def make_meal(): salat = make_salad() sendvich = make_sandwich() qaytib salat + "" bilan + sendvich
make_salad va make_sandwich kichik funksiyalarini birlashtirib, make_meal funksiyasi to'liq xabar beradi. Agar siz sendvich retseptini o'zgartirishingiz kerak bo'lsa, siz butun taom kodini emas, faqat make_sandwich funksiyasini o'zgartirasiz.
Katta muammoga duch kelganingizda, uni qismlarga bo'lish orqali hal qilish osonroq bo'ladi. Har bir kichik qismni funktsiya yordamida hal qilish mumkin. Bu modulli dasturlashning asosiy g'oyasi.
Tasavvur qiling, sizda juda tartibsiz xona bor. Hammasini bir vaqtning o'zida tozalash o'rniga, siz reja tuzishingiz mumkin:
Har bir qadam oddiy va oson. Barcha bosqichlarni tugatsangiz, xonangiz toza bo'ladi. Dasturlashda har bir qadam funksiya tomonidan boshqariladi. Bu muammoni hal qilishni ancha osonlashtiradi.
Modul - bu bir nechta funktsiyalarni o'z ichiga olgan fayl. Modul yaratganingizda, kodingizni qayta foydalanish mumkin va tartibli qilasiz. Misol uchun, siz asosiy arifmetika uchun funktsiyalarni o'z ichiga olgan math_tools deb nomlangan modul yaratishingiz mumkin.
Math_tools da siz qo'shish , ayirish , ko'paytirish va bo'lish kabi funksiyalarga ega bo'lishingiz mumkin. Keyin, kodni qayta yozmasdan math_tools-dan turli xil dasturlarda foydalanishingiz mumkin.
# Bu math_tools.py nomli modulga misol def qo'shish (a, b): a + b qaytaring def ayirish (a, b): a - b qaytish def ko'paytiring (a, b): a * b qaytaring def bo'lish (a, b): agar b != 0: a / b qaytaring boshqa: qaytish "Nolga bo'linib bo'lmaydi!"
Ushbu modulni dasturingizga import qilish orqali siz istalgan vaqtda funksiyalarni chaqirishingiz mumkin. Bu vaqtni tejaydi va ishingizni toza qiladi.
Bir nechta funksiyalardan birgalikda foydalansangiz, u kattaroq dasturlarni yaratishga yordam beradi. Har bir funktsiya jamoadagi ishchilar kabi mustaqil ishlaydi. Agar bitta ishchi yaxshi ishlamasa, siz bu qismni butun jamoaga ta'sir qilmasdan almashtirishingiz mumkin.
Masalan, oddiy o'yinda move_player , check_collision va update_score kabi funksiyalar bo'lishi mumkin. Har bir funktsiya bitta vazifa uchun javobgardir. Birgalikda ular o'yinni muammosiz ishlaydi.
Funktsiyalar uchun aniq va oddiy nomlarni tanlash juda muhimdir. Yaxshi nom sizga funksiya nima qilishini aytadi. Account_total nomli funktsiyani ko'rganingizda, u qiymatlarni qo'shishini darhol bilasiz. Oddiy va tushunarli nomlar kodni o'qish, tushunish va foydalanishni osonlashtiradi.
Uzoq yoki chalkash ismlardan saqlaning. Funktsiya bajaradigan vazifaga bevosita aloqador so'zlardan foydalaning. Bu odat hatto yangi dasturchilarga ham har bir funksiya nima qilishini tushunishga yordam beradi.
Ba'zida funktsiyalar nolga bo'linish kabi muammolarga duch kelishi mumkin. Ushbu xatolarni ehtiyotkorlik bilan hal qilish juda muhimdir. Ko'pgina funktsiyalar bunday xatolarni tekshiradi va biror narsa noto'g'ri bo'lsa, foydali xabar beradi.
Masalan, bo'linish funksiyamizda biz quyidagilarni ko'ramiz:
def bo'lish (a, b): agar b != 0: a / b qaytaring boshqa: qaytish "Nolga bo'linib bo'lmaydi!"
Bu kod b nol ekanligini tekshiradi. Agar shunday bo'lsa, funktsiya nolga bo'linmasligingizni aytadi. Bu dasturning ishdan chiqishini oldini oladi va nima noto'g'ri bo'lganini tushunishga yordam beradi.
Parametrlar funksiya ichidagi joy egalaridir. Funktsiyani chaqirganingizda, siz argumentlar deb ataladigan qiymatlarni o'tkazasiz. Masalan, add(a, b) funksiyasida a va b parametrlardir. Funksiyani add(10, 5) bilan chaqirganingizda, 10 va 5 qiymatlari argumentlarga aylanadi.
Bu usul funksiyani moslashuvchan qiladi. Funktsiyani har safar chaqirganingizda turli argumentlardan foydalanishingiz mumkin. Bu retseptga o'xshaydi. Salatda turli xil mevalardan foydalansangiz ham, qadamlar bir xil bo'lib qoladi va siz baribir mazali salat olasiz.
Ko'pgina kundalik texnologiyalar funktsiyalarga va modulli dasturlashga tayanadi. Haqiqiy hayotdan bir nechta misollar:
Modulli dasturlash moslashuvchan va oson yangilanadigan tizimlarni yaratishga yordam beradi. Bir qismni o'zgartirish yoki tuzatish kerak bo'lganda, faqat tegishli modul o'rnatiladi. Shunday qilib, umumiy tizim muammosiz ishlashda davom etadi.
Funktsiyalarni yozishda yangi dasturchilar yo'l qo'yishi mumkin bo'lgan bir nechta keng tarqalgan xatolar mavjud. Bularni bilib, ulardan qochishingiz mumkin:
Ushbu xatolardan qochib, siz toza va samaraliroq kod yozishingiz mumkin. Bu sizning dasturlaringizni saqlash va tushunishni osonlashtiradi.
Funktsiyalar modullarning qurilish bloklari. Modul ko'plab funktsiyalarni o'z ichiga olgan asboblar qutisiga o'xshaydi. Xuddi shunga o'xshash vositalarni birga saqlaganingizdek, modulda tegishli funktsiyalarni guruhlaysiz. Shunday qilib, muayyan vazifani bajarish kerak bo'lganda, siz qaerga qarashni aniq bilasiz.
Masalan, sizda matematik operatsiyalar uchun modul, satrlarni qayta ishlash uchun modul va sanalar bilan ishlash uchun boshqa modul bo'lishi mumkin. Har bir modul o'z sohasiga tegishli funktsiyalarni tashkil qiladi. Loyihalar kattalashganda ushbu tuzilma juda foydali.
Dasturlashda katta muammoga duch kelganingizda, eng yaxshi yondashuv uni kichikroq muammolarga ajratishdir. Har bir kichik muammoni funktsiyani yozish orqali hal qilish mumkin. Barcha kichik qismlar echilgandan so'ng, ular to'liq yechim hosil qilish uchun birlashtiriladi.
Ushbu yondashuv jumboqni echishga o'xshaydi. Siz qismlardan boshlaysiz va keyin to'liq rasmni ko'rish uchun ularni birma-bir ulaysiz. Har bir kichik qismning to'g'ri ishlashini bilish yakuniy natijani kuchli va ishonchli qiladi.
Funktsiyalaringizni yozishda ba'zi oddiy maslahatlar:
Ushbu maslahatlardan foydalanib, siz ko'plab loyihalarda qayta ishlatilishi mumkin bo'lgan kuchli va tushunarli funktsiyalarni yaratishingiz mumkin.
Keling, dasturda funktsiyalarni yozish va ulardan foydalanishning oddiy bosqichma-bosqich jarayonini ko'rib chiqamiz:
Bu jarayon dasturlarni modulli tarzda yaratishga yordam beradi. Har bir kichik qism funksiya tomonidan bajariladi va barcha qismlar yakuniy dastur uchun birlashadi.
Keling, ushbu darsning asosiy g'oyalarini ko'rib chiqaylik:
Ushbu dars funksiyalar va modulli dasturlashdan foydalanish kodlash hayotingizni qanday sodda va qiziqarli qilishini ko'rsatdi. Har bir funktsiya katta loyihaning bir qismini yakunlaydigan yordamchi vositaga o'xshaydi. Ushbu vositalarni birlashtirganingizda, siz toza, tartibli va tushunarli dasturlarni yaratasiz.
Esingizda bo'lsin, yaxshi dasturlashning kaliti muammolarni kichik, boshqariladigan qismlarga ajratishdir. Raqamlar qo'shsangiz, salomlashasizmi yoki o'yin qurasizmi, funksiyalar buni bosqichma-bosqich bajarishga yordam beradi. Modulli dasturlash - bu oddiy, tushunarli qismlardan foydalangan holda murakkab tizimlarni yaratishga imkon beruvchi strategiya.
Funksiyalarni yozish va kodingizni modullarga joylashtirishni mashq qilsangiz, muammolarni hal qilishda yaxshilanasiz. Siz yozgan har bir kichik funktsiya kattaroq va ta'sirchan dasturlarni yaratish yo'lidagi qadamdir. Har qanday qiziqarli jumboq yoki qurilish to'plamida bo'lgani kabi, kodingizni sinab ko'ring, sinab ko'ring va takomillashtirishda davom eting!