ГЛАВА 2, 3, 4, 5. 2 тарау. Python Негіздері Бадарламаларды жазуа кіріспе
Скачать 242.51 Kb.
|
Модульдер Python тіліндегі Модуль басқа бағдарламаларда қайта пайдалануға болатын коды бар жеке файлды білдіреді. Модульді құру үшін модульді білдіретін *.py кеңейтімі бар нақты файлды жасау керек. Файл атауы модульдің атауын білдіреді. Содан кейін бұл файлда бір немесе бірнеше функцияны анықтау керек. Бағдарламаның негізгі файлы деп аталсын hello.py. біз оған сыртқы модульдерді қосқымыз келеді. Мұны істеу үшін алдымен жаңа модульді анықтаңыз: біз шақыратын жаңа файл жасаңыз account.py. орналасқан қалтада hello.py. егер PyCharm немесе басқа IDE қолданылса, онда екі файл да бір жобаға сәйкес келеді. Python-дағы Модульдер Тиісінше, модуль account деп аталады. Және онда келесі кодты анықтаңыз:
Мұнда calculate_income функциясы анықталған, ол параметрлер ретінде салымның пайыздық мөлшерлемесін, салым сомасын және салым салынатын кезеңді алады және осы кезеңнің соңында алынған соманы есептейді. Файлда hello.py біз бұл модульді қолданамыз:
Модульді пайдалану үшін оны импорт операторының көмегімен импорттау керек, содан кейін модульдің аты көрсетіледі: импорт шоты. Модульдің функционалдығына қол жеткізу үшін оның аттар кеңістігін алу керек. Әдепкі бойынша, ол модульдің атымен сәйкес келеді, яғни біздің жағдайда ол да аталады есеп. Модуль атауларының кеңістігін алғаннан кейін, біз оның функцияларына кеңістік схемасына сілтеме жасай аламыз.функциясы:
Осыдан кейін біз негізгі сценарийді іске қоса аламыз hello.py және ол модульді қамтиды account.py. атап айтқанда, консоль шығысы келесідей болуы мүмкін: Пайыздық мөлшерлемені енгізіңіз: 10 Соманы енгізіңіз: 300000 Шотты жүргізу кезеңін айлармен енгізіңіз: 6 Шот параметрлері: Сомасы: 300000 Ставка: 10 Кезең: 6 Кезеңнің соңындағы шот сомасы: 315315.99 Аттар кеңістігін орнату Әдепкі бойынша, модульді импорттаған кезде, ол сол атау кеңістігі арқылы қол жетімді. Алайда, біз бұл мінез-құлықты жоққа шығара аламыз. Сонымен, as кілт сөзі модульді басқа аттар кеңістігімен салыстыруға мүмкіндік береді. Мысалы:
Бұл жағдайда аттар кеңістігі acc деп аталады. Тағы бір теңшеу опциясы модульдің функционалдығын from кілт сөзін қолдана отырып, ағымдағы модульдің Ғаламдық аттар кеңістігіне импорттауды қамтиды:
Бұл жағдайда біз account модулінен Ғаламдық аттар кеңістігіне calculate_income функциясын импорттаймыз. Сондықтан біз оны модуль атауларының кеңістігін сол файлда анықталғандай көрсетпестен пайдалана аламыз. Егер есеп модулінде бірнеше функция болса, оларды Ғаламдық аттар кеңістігіне бір өрнекпен импорттауға болады:
Бірақ айта кету керек, жаһандық аттар кеңістігіне импорттау функция атауларының қақтығыстарына әкелуі мүмкін. Мысалы, егер бізде бірдей файлда бірдей функция анықталған болса, онда функцияны шақырған кезде қате пайда болуы мүмкін. Сондықтан импортты Ғаламдық аттар кеңістігіне пайдаланудан аулақ болған жөн. Модуль атауы Жоғарыдағы мысалда модуль hello.py, ол негізгі болып табылады, модульді пайдаланады account.py. модульді іске қосу кезінде hello.py бағдарлама барлық қажетті жұмыстарды орындайды. Алайда, егер біз модульді бөлек іске қоссақ account.py өзі консольде ештеңе көрмейді. Өйткені, модуль функцияны анықтайды және басқа әрекеттерді орындамайды. Бірақ біз модульді жасай аламыз account.py оны өздігінен де, басқа модульдерге де қосуға болады. Модульді орындау кезінде қоршаған орта оның атын анықтайды және оны жаһандық айнымалыға тағайындайды __name__ (екі жағында екі астын сызу). Егер модуль іске қосылса, онда оның атауы __main__ (сонымен қатар әр жағынан екі астын сызу). Егер модуль басқа модульде қолданылса, онда орындау кезінде оның атауы py кеңейтімінсіз файл атауына ұқсас болады. Біз оны қолдана аламыз. Сонымен, файл мазмұнын өзгертіңіз account.py:
Сонымен қатар, негізгі функция функцияны тексеру үшін анықталған. Біз файлды бірден іске қоса аламыз account.py барлығынан бөлек және кодты тексеріңіз. Негізгі функцияны шақыруға назар аудару керек:
Айнымалы _ _ name _ _ модуль атауын көрсетеді. Тікелей іске қосылатын негізгі модуль үшін Бұл айнымалы файл атауына қарамастан әрқашан __main__ мәніне ие болады. Сондықтан, егер біз сценарийді іске қосатын болсақ account.py бөлек, Python _ _ name _ _ айнымалысына _ _ main _ _ мәнін тағайындайды, содан кейін if өрнегінде сол файлдан main функциясын шақырады. Алайда, егер біз басқа сценарийді іске қосатын болсақ, және бұл - account.py -біз көмекші ретінде қосамыз, account.py _ _ name _ _ айнымалы есептік жазба мәніне ие болады. Және, тиісінше, файлдағы негізгі әдіс account.py жұмыс істемейді. Модуль атауын тексеретін бұл тәсіл негізгі әдісті шақырудан гөрі ұсынылған тәсіл болып табылады. Файлда hello.py сондай-ақ, модульдің негізгі екендігін тексеруге болады (дегенмен, бұл міндетті емес):
Ерекшеліктерді өңдеу Python-да бағдарламалау кезінде біз қателіктердің екі түріне тап болуымыз мүмкін. Бірінші тип синтаксистік қателерді білдіреді (syntax error). Олар бастапқы кодты жазу кезінде бағдарламалау тілінің синтаксисін бұзу нәтижесінде пайда болады. Егер мұндай қателер болса, бағдарламаны құрастыру мүмкін емес. Қандай да бір даму ортасында жұмыс істеген кезде, мысалы, PyCharm-да, ide-нің өзі синтаксистік қателерді бақылай алады және оларды қандай да бір жолмен ерекшелей алады. Қателердің екінші түрі-орындау қателері (runtime error). Олар қазірдің өзінде құрастырылған бағдарламада оны орындау барысында пайда болады. Мұндай қателіктер ерекше жағдайлар деп те аталады. Мысалы, өткен тақырыптарда біз санды жолға түрлендіруді қарастырдық:
Бұл сценарий сәтті құрастырылып, орындалады, өйткені "5" жолын санға айналдыруға болады. Алайда тағы бір мысал келтірейік:
Осы сценарийді орындау кезінде ValueError-дан ерекшелік алынып тасталады, өйткені "hello" жолын санға айналдыруға болмайды. Бір жағынан, мұнда жүз жол санды білдірмейтіні анық, бірақ біз қолданушыны енгізумен айналысуымыз мүмкін, ол біз күткендей емес:
Ерекшелік болған кезде бағдарламаның жұмысы үзіледі және мұндай мінез-құлықты болдырмау және Python-да ерекше жағдайларды өңдеу үшін try дизайны бар..келесі ресми анықтамасы бар except:
Ерекшелік туындауы мүмкін барлық негізгі код try кілт сөзінен кейін орналастырылады. Егер осы кодта ерекшелік пайда болса, онда try блогындағы кодтың жұмысы үзіліп, орындау except блогына өтеді. Ерекшелік кілт сөзінен кейін қандай ерекшелік өңделетінін көрсетуге болады (мысалы, ValueError немесе KeyError). Except сөзінен кейін, келесі ағызу кезінде ерекшелік блогының нұсқаулары ерекше жағдай туындаған кезде орындалады. Жолды санға түрлендіру мысалында ерекше жағдайды өңдеуді қарастырыңыз:
Жолды енгізіңіз: Нөмірді енгізіңіз: Сәлем Түрлендіру сәтсіз аяқталды Бағдарламаны аяқтау Консоль шығысынан көрініп тұрғандай, жолды енгізген кезде консольге санның шығуы болмайды және бағдарламаның орындалуы except блогына өтеді. Дұрыс санды енгізіңіз: Нөмірді енгізіңіз: 22 Енгізілген Сан: 22 Бағдарламаны аяқтау Енді бәрі жақсы орындалады, ерекшелік болмайды және сәйкесінше except блогы орындалмайды. Жоғарыдағы мысалда кодта пайда болуы мүмкін барлық ерекшеліктер бірден өңделді. Алайда, біз except сөзінен кейін оны көрсете отырып, өңделетін ерекшеліктің түрін анықтай аламыз:
Егер жағдай бағдарламада әр түрлі ерекшеліктер пайда болуы мүмкін болса, онда біз оларды қосымша except өрнектерін қолдана отырып жеке-жеке өңдей аламыз:
Егер жолды санға түрлендіру нәтижесінде ерекшелік болса, онда ол except ValueError блогымен өңделеді. Егер екінші сан нөлге тең болса, яғни нөлге бөлу болады, содан кейін zerodivisionerror ерекшелік пайда болады және оны zerodivisionerror except блогы өңдейді. Ерекшелік түрі барлық ерекше жағдайларға ұшырайтын жалпы ерекшелікті білдіреді. Сондықтан, бұл жағдайда ValueError немесе ZeroDivisionError түрін көрсетпейтін кез-келген ерекшелік ерекше ерекшелік блогында өңделеді:. Finally блогы Ерекше жағдайларды өңдеу кезінде қосымша finally блогын пайдалануға болады. Бұл блоктың ерекшелігі-бұл ерекшелік жасалған-жасалмағанына қарамастан орындалады: Әдетте, finally блогы файлдарды жабу сияқты пайдаланылатын ресурстарды босату үшін қолданылады. Алып тастау туралы ақпарат алу As операторының көмегімен біз барлық алып тастау туралы ақпаратты айнымалыға жібере аламыз, оны except блогында пайдалануға болады:
Қате енгізу мысалы: Нөмірді енгізіңіз: fdsf Алып тастау туралы мәліметтер invalid literal for Int () with base 10: 'fdsf' Бағдарламаны аяқтау Ерекшеліктер жасау Кейде осы немесе басқа ерекшелікті қолмен жасау қажет. Ол үшін raise операторы қолданылады.
Ерекше жағдайды шақырған кезде біз оған хабарлама жібере аламыз, содан кейін оны пайдаланушыға шығаруға болады: Бірінші санды енгізіңіз: 1 Екінші санды енгізіңіз: 0 Екінші сан 0-ге тең болмауы керек Бағдарламаны аяқтау |