Қазақстан Республикасының ауылшаруашылық министрлігі


Python Мүмкіндіктерге шолу



бет11/14
Дата15.12.2023
өлшемі104,78 Kb.
#138073
1   ...   6   7   8   9   10   11   12   13   14
2.Python Мүмкіндіктерге шолу


2.1.Басқару құрылымдары

Python, көптеген тілдерден (Паскаль, C++, Java және т.б.) айырмашылығы, айнымалы мәлімдемелерді қажет етпейді. Олар инициализацияланған жерде жасалады, яғни. айнымалыға бірінші рет мән тағайындалады. Бұл айнымалының түрі тағайындалған мәннің түрімен анықталатынын білдіреді. Бұл жағынан Python Basic тіліне ұқсайды.


Айнымалының түрі өзгермейтін емес. Оған кез келген тағайындау дұрыс және бұл тек айнымалы түрінің жаңа тағайындалған мәннің түріне айналуына әкеледі.
2. Pascal, C, C++ сияқты тілдерде тізімдерді ұйымдастыру біршама қиындықтар туғызды. Оларды жүзеге асыру үшін көрсеткіштермен және динамикалық жадымен жұмыс істеу принциптерін жан-жақты зерделеу қажет болды. Жақсы біліктілікке ие болғанның өзінде, бағдарламашы тізімдерді жасау, жұмыс істеу және жою механизмдерін қайта іске қосқан сайын оңай қателіктер жібере алады. Осыны ескере отырып, тізімдермен жұмыс істеу үшін кейбір құралдар жасалды. Мысалы, Delphi Паскальда тізімдерді жүзеге асыратын TList класы бар; STL (Standard Template Library) кітапханасы C++ тіліне арналған, құрамында векторлар, тізімдер, жиындар, сөздіктер, стектер және кезектер сияқты құрылымдар бар. Дегенмен, мұндай қондырғылар барлық тілдерде және оларды іске асыруда қол жетімді емес[6].
Python тілінің өзіне тән ерекшеліктерінің бірі тілдің өзіне енгізілген кортеждер, тізімдер және сөздіктер сияқты құрылымдардың болуы, оларды кейде карталар деп те атайды. Оларды толығырақ қарастырайық.
Кортеж. Ол массивті біршама еске түсіреді: ол элементтерден тұрады және қатаң анықталған ұзындыққа ие. Элементтер кез келген мәндер болуы мүмкін - қарапайым тұрақтылар немесе объектілер. Массивтен айырмашылығы, кортеж элементтері міндетті түрде біртекті емес. Ал кортежді тізімнен ерекшелендіретін нәрсе – кортежді өзгерту мүмкін емес, яғни. біз i-ші кортеж элементіне жаңа нәрсені тағайындай алмаймыз және жаңа элементтерді қоса алмаймыз. Осылайша, кортежді тұрақты тізім деп атауға болады. Синтаксистік түрде кортеж барлық жақшаға алынған үтірмен бөлінген барлық элементтерді тізімдеу арқылы көрсетіледі:
(1, 2, 5, 8)
(3.14, 'жол', -4)
Барлық элементтер нөлден бастап индекстелген. i-ші элементті алу үшін төртбұрышты жақшада i индексінен кейін кортеж атауын көрсету керек. Мысалы:
t = (0,1,2,3,4)
басып шығару t[0], t[-1], t[-3]
Нәтиже: 0 4 2
Осылайша, егер оның элементтері әрқашан біртекті болса, кортежді тұрақты вектор деп атауға болады.
Тізім. Тізімнің жақсы, нақты мысалы - Турбо Паскаль тілінің жолы. Жолдың элементтері жалғыз символдар, оның ұзындығы бекітілмеген, элементтерді жоюға немесе керісінше оларды жолдың кез келген жеріне енгізуге болады. Тізім элементтері міндетті түрде бір типті емес, ерікті нысандар болуы мүмкін. Тізімді жасау үшін оның элементтерін үтірмен бөліп, барлығын төртбұрышты жақшаға алу жеткілікті:
[3, 5.14, 's']
['жол', (0,1,8), [1,1]]
Кортежден айырмашылығы, тізімдерді қалауыңызша өзгертуге болады. Элементтерге қол жеткізу кортеждердегі сияқты жүзеге асырылады. Мысалы:
l = [1, 's', (2,8), [0,3,4]]
l[0], l[1], l[-2], l[-1][0] басып шығару
Нәтиже: 1 с (2,8) 0
Сөздік. Ол Паскаль тіліндегі жазба түрін немесе С тіліндегі құрылым типін еске түсіреді.Бірақ мұнда «жазба өрісі»-«мән» схемасының орнына «кілт»-«мән» қолданылады. Сөздік – кілт-мән жұптарының жиынтығы. Мұнда «кілт» кез келген түрдегі тұрақты (бірақ жолдар негізінен пайдаланылады), ол өзіне сәйкес (өзгертуге болатын) қандай да бір мәнді атау (индекс) үшін қызмет етеді. Сөздік оның элементтерін (қос нүктемен бөлінген кілт-мән жұптары) тізіп, үтірмен бөлу және олардың барлығын бұйра жақшаға алу арқылы жасалады. Белгілі бір мәнге қол жеткізу үшін сөздік атауынан кейін сәйкес кілтті жазу керек. Мысалы:
d = {'a': 1, 'b': 3, 5: 3,14, 'аты': 'Джон'}
d['b'] = d[5]
d['a'], d['b'], d[5], d['name'] басып шығару
Нәтиже: 1 3,14 3,14 Джон
Жаңа кілт-мән жұбын қосу үшін жаңа кілтпен элементке сәйкес мәнді тағайындаңыз:
d['new'] = 'жаңа мән'
басып шығару d
Нәтиже: {'a':1, 'b':3, 5:3.14, 'name':'John', 'new':'жаңа мән'}
3. Python, Pascal, C, C++-тен айырмашылығы, көрсеткіштермен жұмыс істеуді, динамикалық жадыны және адрес арифметикасын қолдамайды. Осылайша ол Java-ға ұқсайды. Өздеріңіз білетіндей, көрсеткіштер нәзік қателердің көзі болып табылады және олармен жұмыс істеу төменгі деңгейлі бағдарламалауға көбірек қатысты. Үлкен сенімділік пен қарапайымдылықты қамтамасыз ету үшін олар Python-ға қосылмаған.
4. Python ерекшеліктерінің бірі - бір айнымалының екіншісіне қалай тағайындалуы, яғни. «=» операторының екі жағында айнымалылар болған кезде.
Тимоти Баддтан ([1]) кейін, біз тапсырма тек сілтеме (көрсеткіш) тағайындауға әкелетін жағдайды көрсеткіш семантикасы деп атаймыз, яғни. жаңа айнымалы ескі айнымалымен бірдей жад орнын білдіретін басқа атқа айналады. Бұл жағдайда жаңа айнымалымен белгіленген мәнді өзгерту ескінің мәнінің өзгеруіне әкеледі, өйткені олар шын мәнінде бірдей нәрсені білдіреді[7].
Тапсырма жаңа объект құруға (бұл жерде қандай да бір түрдегі мәнді сақтауға арналған жад орны мағынасында объект) және оған тағайындалған айнымалының мазмұнын көшіруге әкелгенде, біз бұл жағдайды көшіру семантикасы деп атаймыз. Осылайша, көшіру кезінде көшіру семантикасы қолданылса, «=» белгісінің екі жағындағы айнымалылар мазмұны бірдей екі тәуелсіз нысанды білдіреді. Ал мұнда бір айнымалының кейінгі өзгерісі екіншісіне ешқандай әсер етпейді.
Python бағдарламасында тағайындау келесідей орындалады: егер тағайындалған нысан сандар немесе жолдар сияқты түрлердің данасы болса, көшіру семантикасы қолданылады, бірақ оң жағында сынып, тізім, сөздік немесе кортеж данасы болса, көрсеткіш семантикасы қолданылады. Мысалы:
a = 2; b = a; b = 3
басып шығару 'көшіру семантикасы: a=', a, 'b=', b
a=[2,5]; b = a; b[0] = 3
print 'көрсеткіш семантикасы: a=', a, 'b=', b
Нәтиже:
семантикасын көшіру: a= 2 b= 3
көрсеткіш семантикасы: a= [3,5] b= [3,5]
Мұның не туралы екенін білгісі келетіндер үшін мен Python-да тапсырманы басқаша қабылдаймын. Basic, Pascal, C/C++ сияқты тілдерде біз «сыйымдылық» айнымалыларымен және оларда сақталған тұрақтылармен (сандық, символдық, жолдық - маңызды емес) жұмыс жасасақ, ал тағайындау операциясы тұрақтыны «енгізу» дегенді білдіреді. тағайындалған айнымалы мәнге енгізсеңіз, Python-да біз «name» айнымалыларымен және олар атайтын нысандармен жұмыс істеуіміз керек. (Пролог тілімен кейбір ұқсастықтарға назар аударыңыз ба?) Python тіліндегі объект дегеніміз не? Бұл атау беруге болатын барлық нәрсе: сандар, жолдар, тізімдер, сөздіктер, класс даналары (Object Pascal тілінде олар объектілер деп аталады), класстардың өздері (!), функциялар, модульдер және т.б. Сонымен, белгілі бір объектіге айнымалыны тағайындаған кезде, айнымалы оның «атауына» айналады және объектіде қалағанша көп «атауға» ие болуы мүмкін және олардың барлығы бір-бірінен тәуелсіз[8].
Енді объектілер өзгертілетін (өзгермелі) және өзгермейтін болып екіге бөлінеді. Өзгермелі - олардың «ішкі мазмұнын» өзгерте алатындар, мысалы, тізімдер, сөздіктер, сынып даналары. Және өзгермейтіндер - сандар, кортеждер, жолдар сияқты (иә, жолдар да; ескі жолдан алынған жаңа жолды айнымалыға тағайындауға болады, бірақ ескі жолдың өзін өзгерте алмайсыз).
Сонымен, егер біз жазсақ:
a=[2,5]; b = a; b[0] = 3
Python оны келесідей түсіндіреді:
«тізім[2,5]» нысан атын a;
бұл нысанға басқа атау беріңіз - b;
нысанның нөлдік элементін өзгерту.
Көрсеткіштердің «псевдо» семантикасын осылай аламыз.
Бұл туралы айта кететін соңғы бір нәрсе: кортеж құрылымын өзгерту мүмкін болмаса да, оның құрамындағы өзгермелі компоненттер әлі де өзгерту үшін қол жетімді:
t = (1, 2, [7,5], 'жол')
t[0] = 6 # бұл мүмкін емес
del t[1] # да қате
t[2][1] = 0 # рұқсат етілген,
# енді үшінші компонент тізім [7,0]
t[3][0] = 'S' # қате: жолдар өзгермейді
5. Python операторларын топтастыру тәсілі өте ерекше. Паскаль тілінде бұл start-end оператор жақшалары арқылы орындалады, C, C++, Java тілдерінде - бұйра жақшалар {}, Basic тілінде тіл конструкцияларының жабылатын аяқталуы (NEXT, WEND, END IF, END SUB) қолданылады[9].
Python-да бәрі әлдеқайда қарапайым: мәлімдемелер блогын таңдау таңдалған топты берілген блок жататын құрылымның басына қатысты бір немесе бірнеше бос орындарға немесе қойынды таңбаларына оңға жылжыту арқылы жүзеге асырылады. Мысалы:
егер x > 0:
' x > 0 ' басып шығару
x = x - 8
басқа:
' x <= 0 ' басып шығару
x = 0
Осылайша, Pascal, C++, Java және т.[11]


Достарыңызбен бөлісу:
1   ...   6   7   8   9   10   11   12   13   14




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет