1-sahifa 2-sahifa
Download 363.98 Kb.
|
Python
- Bu sahifa navigatsiya:
- 153-bet Vazifalari 153
- Funktsiya ozgaruvchini yaratadi
- 155-bet 17.1. Funktsiya qongirogi 155
- 17.1. Funktsiya qongirogi
- 157-bet 17.2. Korinadigan joy 157
- 17.3. Bir nechta parametrlar
- 159-bet 17.4. Birlamchi parametrlar 159
- 17.4. Birlamchi parametrlar
- 161-bet 17.5. Funktsiyalar uchun nom tanlash qoidalari 161
- 17.5. Funktsiyalar uchun nom tanlash qoidalari
- 163-bet 18 Indekslash va kesish
- Anjir. 18.1.
- 165-bet 18.2. Bolaklar 165
17 vazifalari Biz mavjud xususiyatlarni muhokama qilmasdan uzoq yo'lni bosib o'tdik Python dasturlarining asosiy qurilish materiallari. Vazifalari alohida blokda ajratilgan kod qismlari. Misollar allaqachon foydalangan kabi ajralmas sifatida funktsiyalari dir va yordam (shuningdek, konversiya funktsiyalari sifatida ishlaydigan sinflar) turi - float , int , dik , ro'yxat va bool ). Funktsiyani «qora quti» sifatida ko'rib chiqish mumkin kirish ma'lumotlari taqdim etiladi (zarur bo'lmasa ham). Keyin qora box "bir qator operatsiyalarni bajaradi va natijani qaytaradi (agar funktsiya bo'lsa) return chaqiruvisiz tugaydi , noaniq qaytadi None ). Asosiy Funktsiyalarning afzalligi - qayta foydalanish qobiliyati kodi. Funktsiya aniqlangandan so'ng, siz qila olasiz uni qayta-qayta chaqiring. Agar dasturda kerak bo'lgan kod bo'lsa bir necha marta ishlating, keyin nusxa ko'chirish / joylashtirishning o'rniga funktsiyasi sifatida uni bir marta tartibga soling va keyin ushbu funktsiyani chaqiring. Bu kod miqdorini kamaytiradi va dasturning o'zi ko'proq bo'ladi tushunarli. Shuningdek, u o'zgartirishlarni (va fix- xato qiling), chunki bu bitta joyda amalga oshiriladi. Oddiy funktsiya misolini ko'rib chiqing. Add_2 nomli bu funktsiya kirishda raqamni qabul qiladi, unga 2 ni qo'shadi va natijani qaytaradi: >>> def add_2 (num): ... '' ' ... sonidan 2 dan ko'prog'ini qaytaring ... '' ' ... natija = num + 2 ... natija
Vazifalari 153 Vazifalari Dam olish kunlari ma'lumotlar Kiritish ma'lumotlar Funktsiya
va natijani (chiqishni) ishlab chiqaradi. Vazifalar chaqirilganda uzatilishi mumkin boshqa funktsiyalar, shuningdek qayta ishlatish Vazifalari Kod Kompyuter nima qiladi O'zgaruvchan ob'ektlar dunders .... Id: 4f3b Turi: Funktsiya def is_odd (num):
return%% 2 is_odd
funktsiya, va keyin funktsiya nomi bilan o'zgaruvchiga unga ko'rsatgichni saqlaydi. Yangi yaratilgan funktsiyaning atributlarini ko'rish uchun siz funktsiyaga qo'ng'iroq qilishingiz mumkin funktsiya nomi uchun dir
154 17-bob. Vazifalar Funktsiyaning qismlari qanday? Kodning butun qismi aniqlangan deb nomlanadi
dan aniqlash , "definition"), deb. Uchun daf majburiy farq bo'lishi kerak (bitta kifoya qiladi) va funktsiya nomi add_2 . Bu nom ishlatiladi funktsiyani chaqirish uchun chaqirilishi mumkin (ya'ni uning bajarilishi). Yaratishda Python funktsiyalari nomiga mos keladigan yangi o'zgaruvchini yaratadi funktsiya nomi bilan. Funktsiya nomi ochilgan qavs bilan va undan keyin keladi tomonidan ta'qib Sah va yopilish Qavslar. Qavslar orasidagi nomlar (ularning har qanday raqam bo'lishi mumkin, garchi bu holda faqat bitta ism mavjud) kiritish parametrlarini - funktsiyaga o'tkaziladigan ob'ektlarni aniqlang. Qavslar yonida yo'g'on ichak ( :) . Agar yo'g'on ichakni ko'rsangiz Python-da, deyarli shubhasiz, blokirovka qilingan blok o'xshash bo'ladi tanasi bilan uchun Loop (yuqorida qarang). Barcha kiritilgan kod funktsiyaning tanasini tashkil qiladi . Funktsiyaning tanasi barcha mantiqlarni o'z ichiga oladi. Avvaliga buni bilib olasiz kodning uchta qatori uch tirnoqli qatorning qurilishini ko'rsatdi. Bu izoh emas, garchi u chiziqqa o'xshaydi. Python imkon beradi darhol darhol joylashtiring : chiziq deb nomlangan chiziq
kodni kodlash. Undan keyin kod blokining tavsifi bo'lishi kerak uning orqasidan zarba. Hujjatlar liniyasi funktsiyaning mantig'iga ta'sir qilmaydi.
Yordam funktsiyasi ushbu kitobda bir necha bor eslatib o'tilgan. Shuni ta'kidlash kerakki bu funktsiya uzatilgan hujjatlar satridan ma'lumot oladi ob'ekt. Agar qo'ng'iroq bo'lsa yordam uchun add_2 , quyidagi natijani olish ( yuqoridagi add_2 kodini kiritgan deb hisoblasangiz ): >>> yordam (add_2) Modulda add_2 funktsiyasi bo'yicha yordam __ kun__: add_2 () numdan 2 dan ko'prog'ini qaytaring (OXIRI) Hujjatlar satrlari sizning kodingiz nima qilishni eslatadi. Muhim va aniq bo'lsa, ular istagan har bir kishiga qimmatli ma'lumotlar beradi kodingizni ishlating.
17.1. Funktsiya qo'ng'irog'i 155 Hujjatlar chizig'idan keyin (izoh: hujjatlar liniyasi ixtiyoriy) funktsiya mantig'iga amal qiladi. Bu erda hisoblab chiqilgan natija. Va nihoyat, return buyrug'i funktsiyaning mavjudligi haqida xabar beradi natijada, ya'ni chiqish qiymati. Qaytish buyrug'i talab qilinmaydi. mazmunli va u yo'q bo'lganda, funktsiya sukut bo'yicha None ni qaytaradi . Funktsiya bir nechta qaytish buyruqlarini o'z ichiga olishi mumkin va ular hatto kerak emas. Siz funktsiyaning oxirida bo'lishingiz kerak. Masalan, shartli ko'rsatma bo'lishi mumkin Ikkita qaytish buyrug'ini o'z ichiga oladi : if blokida va boshqa blokda . Xulosa qiling. Funktsiyaning asosiy qismlari: ❍ Def . ❍ funktsiya nomi. Parent Qavslar ichida funksiya parametrlari. ❍ Kolon ( :) . ❍ Shart: • hujjatlar to'plami. • Mantiq. • Qaytish buyrug'i . Funktsiya yaratish juda oson. Vazifalar qayta ishlatishga imkon beradi Kodni qisqa va tushunarli qiladigan kodni yozing. Vazifalari global holatni o'zgaruvchiga almashtirish orqali uni yo'q qilishga yordam bering tana faoliyatida qisqa umr ko'rish bilan. Quyidagi funktsiyalardan foydalaning kod tuzilishini takomillashtirish.
Pythonda funktsiyalar funktsiyaning nomi bilan chaqiriladi, undan keyin esa dumaloq qavslar. Keyingi parchada biz shunchaki qo'ng'iroq qilamiz bo'lingan add_2 funktsiyasi : >>> add_2 (3) 5 Funktsiyani chaqirish uchun uning nomini kiriting, so'ngra oching - Qavslar, kirish parametrlari va yopiladigan qavslar.
156 17-bob. Vazifalar Parametrlar soni parametrlar soniga mos kelishi kerak funktsiya deklaratsiyasida. Eslatma: REPL natijani chiqaradi. Qo'ng'iroq - 5 ta butun son (ya'ni, buyruqni qaytarishni qaytaradigan ). Add_2 funktsiyasi har qanday ob'ektni o'tishi mumkin. Ammo bu bo'lsa ob'ekt raqamlar bilan qo'shishni qo'llab-quvvatlamaydi, istisno tashlanadi. Satrni o'tkazishda TypeError istisnosi tashlanadi : >>> add_2 ('salom') Traceback (eng so'nggi qo'ng'iroq oxirgi): ... TypeError: str emas, balki str bo'lishi kerak 17.2. Ko'rinadigan joy Python har xil joylarda o'zgaruvchini qidiradi. Bu joylar obla- ko'rinishi yoki nom maydonlari . O'zgaruvchini qidirishda (emas Python-dagi funktsiyalar ham o'zgaruvchan ekanligini unutmang va sinflar, modullar va boshqalar), Python quyidagi joylarda qidiradi va quyidagi tartibda: ❍ Mahalliy miqyos - o'zgaruvchilar vazifalari. ❍ Global miqyosi - global miqyosda aniqlanadigan o'zgaruvchilar to'p darajasi. ❍ O'rnatilgan ko'lam - o'zgaruvchilar, oldindan belgilangan - ny Python-da. Quyidagi kodda har uchalasi uchun o'zgaruvchilarni qidirish amalga oshiriladi ko'rish joylari: >>> x = 2 # Global >>> defield_demo (): ... y = 4 # Mintaqa_demo uchun mahalliy ... bosib chiqarish ("Mahalliy: {}". format (y)) ... chop etish ("Global: {}". format (x)) ... bosib chiqarish ("Ichki: {}". format (dir)) >>> ko'lami_demo () Mahalliy: 4 Global: 2 O'rnatilgan:
17.2. Ko'rinadigan joy 157 Range_demo-ni chaqirgandan so'ng , y mahalliy o'zgaruvchisi yo'q qilinadi axlat yig'ish va global nuqtai nazar sohasida ko'priklar: >>> y Traceback (eng so'nggi qo'ng'iroq oxirgi): ... NameError: 'y' nomi aniqlanmagan Funktsiya yoki usul ichida aniqlangan o'zgaruvchilar mahalliy. Umuman olganda, global o'zgaruvchilardan qochishingiz kerak, chunki ular kodni tushunishni qiyinlashtiradi. Global o'zgaruvchilar ko'pincha darsliklarda, bloglarda va hujjatlarda uchraydi, chunki ular foydalanish kodni kamaytiradi va diqqatni jamlashga yordam beradi O'zgaruvchini funktsiyalarga o'rash orqali chalg'imasdan zanjirlar. Vazifalari va sinflar global o'zgaruvchilardan xalos bo'lishga yordam beradi, yaxshilanadi kod modulligi va uni tushunishni soddalashtirish. ESLATMA Python global o'zgaruvchilarni almashtirish (bekor qilish) imkonini beradi va o'rnatilgan ko'lami. Global miqyosda siz aniqlay olasiz O'z o'zgaruvchan nomidagi baham dir . Ushbu nuqtada, o'rnatilgan dir funktsiyasi global o'zgaruvchiga almashtiriladi . Xuddi shu narsani qilish mumkin funktsiya ichida va o'rnini bosadigan mahalliy o'zgaruvchini yarating global yoki ichki o'zgaruvchan: >>> def dir (x): ... bosib chiqarish ("Dir deb nomlangan") >>> dir ('') Dir chaqirdi Del buyrug'i mahalliy o'zgaruvchini yo'q qilish uchun ishlatilishi mumkin yoki global miqyosda. Biroq, amalda bu boshidan yaxshiroq. Birinchidan, o'rnatilgan ismlarni o'zgartirmaslikka harakat qiling: >>> del dir >>> dir ('') ['__add__', '__class__', '__contains__', ...]
158 17-bob. Vazifalar BOSHQA Mahalliy aholi va GLOBALS vazifalari Ushbu mazmunini ko'rsatish uchun ishlatiladi doiralari. Ular hozirgi lug'ati bilan lug'atlarni qaytaradilar. Ko'rinadigan joy: >>> def foo (): ... x = 1 ... bosib chiqarish (mahalliy ()) >>> foo () {'x': 1} __Builtins__ o'zgaruvchisi nomlangan o'rnatilgan doiradan ko'rsatadi - ko'priklar. Uning __dict__ atributi global uchun bir xil lug'atni ishlab chiqaradi va mahalliy nomlar. 17.3. Bir nechta parametrlar Vazifalar bir nechta parametrlarni qabul qilishi mumkin. Keyingi funktsiya ikkita parametrni oladi va ularning yig'indisini qaytaradi: >>> def add_two_nums (a, b): ... a + b ni qaytaring Python dinamik til bo'lganligi sababli, para metr kerak emas. Ushbu funktsiya ikkita butun sonni yig'ishi mumkin: >>> qo'shing_to'kma_nomlar (4, 6) 10 Va suzuvchi nuqta raqamlarini yig'ish mumkin: >>> add_two_nums (4.0, 6.0) 10.0
Va chiziqlar ham: >>> add_two_nums ('4', '6') '46' Izoh: satrlar uchun + operatsiyasi bajarishda ishlatiladi ulash (ikki satrlari birlashuvchi).
17.4. Birlamchi parametrlar 159 Agar siz raqam bilan qator qo'shmoqchi bo'lsangiz, Python hisobot beradi xato: >>> add_two_nums ('4', 6) Traceback (eng so'nggi qo'ng'iroq oxirgi): ...
TypeError: 'int' ob'ektini str-ga o'zgartira olmadi Bu Python aniqroq tavsiflashni talab qiladigan holatlardan biridir. to'g'ri operatsiya va siz uchun taxmin qilishga urinmaydi. Agar xoxlasangiz raqam bilan jonli satr turi, ehtimol avval o'zgartirilishi kerak ularni raqamli formatga o'tkazing ( float yoki int yordamida ). Boshqa tomondan, agar siz bog'lovchi operatsiyani bajarishingiz kerak bo'lsa, aylantirishingiz kerak har bir satrda raqamlar. Python avtomatik ravishda bajariladigan operatsiyani tanlamaydi. Chesky. Buning o'rniga, dasturchini majburlaydigan xato chiqariladi noaniqlikni hal qiling.
Python funktsiyalarining qulay xususiyatlaridan biri bu parametrlardir sukut bo'yicha . Nomidan ko'rinib turibdiki, ular sizga qiymatlarni belgilashga imkon beradi funktsiya parametrlari uchun sukut bo'yicha. Birlamchi parametrlar majburiy emas, garchi zarur bo'lsa, ularni o'zgartirish mumkin aniqlash uchun. Quyidagi funktsiya add_two_nums- ga o'xshaydi , ammo agar ikkinchisi chaqirilsa raqam ko'rsatilmagan, sukut bo'yicha 3 qo'shiladi: >>> def add_n (son, n = 3): ... "" "sukut bo'yicha ... qo'shish 3 "" " ... num + n ni qaytaring >>> add_n (2) 5 >>> add_n (15, -5) 10 Parametr uchun standart qiymat yaratish uchun, keyin qo'ying parametr teng belgisi ( = ) va kerakli qiymat.
160 17-bob. Vazifalar ESLATMA Odatiy parametrlar odatiy parametrlardan keyin e'lon qilinishi kerak, aks holda Python SyntaxError xatosini tashlaydi : >>> def add_n (son = 3, n): ... num + n ni qaytaring Traceback (eng so'nggi qo'ng'iroq oxirgi): ... SyntaxError: standart bo'lmagan argument quyidagicha standart argument Python majburiy parametrlarni oldindan e'lon qilinmaganligini talab qiladi majburiy. Yuqoridagi kod formani chaqirish uchun ishlamaydi add_n (4) chunki kerakli parametr yo'q. MASLAHAT O'zgaruvchan turlarni (ro'yxatlar, lug'atlar) parametr sifatida ishlatmang sukut bo'yicha - nima qilayotganingizni yaxshi tushunmasangiz. sababli Python xususiyatlariga ko'ra, faqat bitta parametr sukut bo'yicha yaratilgan marta - funktsiyani aniqlash paytida, lekin uni bajarish paytida emas. Agar Siz Agar siz o'zgaruvchan standart qiymatdan foydalansangiz, har safar qo'ng'iroq qilganingizda Odatiy parametrning bir xil namunasi qayta ishlatiladi: >>> def to_list (qiymat, standart = []): ... standart.append (qiymat) ... asliga qaytish >>> ro'yxati (4) [4]
>>> to_list ('salom') [4, 'salom'] Standart parametrlar generatsiya vaqtida yaratilganligi funktsiyalari, ko'plab dasturchilar nuqson deb hisoblashadi. Buning sababi shundaki xatti-harakatlar turli kutilmagan hodisalar bilan to'la. Hal qilish standart qiymatlarni yaratishni aniqlash bosqichidan tashqariga chiqarishdir funktsiya bosqichida (faqat bir marta bajariladi) (funktsiya bajarilganda har safar yangi qiymat yaratiladi). Belgilanadigan standart o'zgaruvchan parametrlarni o'zgartiring hech biri ga o'rnatilmagan . Keyin kerakli o'zgaruvchan turdagi namunani yarating funktsiya tanasida, agar standart qiymati None bo'lsa :
17.5. Funktsiyalar uchun nom tanlash qoidalari 161 >>> def to_list2 (qiymat, odatiy = Yo'q): ... agar sukut bo'yicha None mavjud bo'lsa: ...
standart = [] ... standart.append (qiymat) ... asliga qaytish >>> to_list2 (4) [4] >>> to_list2 ('salom') ['Salom'] Quyidagi kod: ... agar sukut bo'yicha None mavjud bo'lsa: ... standart = [] shartli ifoda yordamida bitta satrda yozilishi mumkin : ... sukut = sukut bo'yicha, agar standart bo'lmasa, boshqa hech kim emas [] 17.5. Funktsiyalar uchun nom tanlash qoidalari Funktsiya nomini tanlash qoidalari tanlov qoidalari bilan ko'p o'xshashliklarga ega o'zgaruvchan nomlar (va ular ham PEP 8 da). Ismlarda deb atalmish ilon registridan foydalanadi , uni o'qish osonroq. Funktsiya nomlari: Lower kichik harf bilan yozilishi kerak; ❍ so'zlarni pastki chiziqlar bilan ajratish kerak; Numbers raqamlar bilan boshlanmasligi kerak; Names o'rnatilgan ismlarni aniqlamasligi kerak; Key kalit so'zlarga mos kelmasligi kerak. Java kabi tillar tuya deb ataladigan narsadan foydalanadi ro'yxatdan o'ting ". Bu sxema shaklida o'zgaruvchan nomlarini yaratadi sectionList yoki hasTimeOverlap . Pythonda o'zgaruvchilarga nomlar beriladi qism_list va has_time_overlap mos ravishda. Python kodi kerak bo'lsa-da PEP 8 konventsiyalariga rioya qiling, PEP 8 shuningdek e'tiborga oladi uslubi. Agar siz ishlayotgan kod boshqacha bo'lsa
162 17-bob. Vazifalar sxemalarga nom bering, namuna oling va sxemadan foydalaning, mavjud kod. Aslida, standartdan eng kichik modulda kutubxonalar hali sxemani Java uslubida qo'llaydilar (chunki Ushbu modul dastlab Java junit kutubxonasidan import qilingan ). 17.6. Xulosa Vazifalar o'zgarishlarni va yon ta'sirlarni kapsulalashga imkon beradi. tanangizda. Ushbu bobda siz funktsiyalar kirishni qabul qilishi mumkinligini bilib oldingiz. va natijani qaytaring. Bir necha kirish parametrlari bo'lishi mumkin, va ularga standart qiymatlar tayinlanishi mumkin. Eslatib o'tamiz, Python-da ob'ektlar va ularni yaratishda hech narsa yo'q funktsiyalari, shuningdek, siz funktsiyaning nomi bilan o'zgaruvchini yaratasiz bu funktsiyani bildiradi. Vazifalar, shuningdek, yozib oladigan hujjatlar liniyasini o'z ichiga olishi mumkin e'londan so'ng darhol. Ushbu chiziqlar hujjat hosil qiladi. Agar qo'ng'iroq paytida paydo haqida gapiradi yordam , bir funktsiya uchun.
1. is_odd funktsiyasini yozing , u butun sonni oladi va qaytadi hajda To'g'ri g'alati raqamlar yoki Soxta hatto uchun raqamlar . 2. funktsiyani yozing is_prime , u butun sonni oladi va qaytadi haqiqiy raqamlar uchun True yoki raqamlar uchun noto'g'ri bo'lsa , aylanadi oddiy.
3. Ikkilik qidirish funktsiyasini yozing. Vazifa olinishi kerak tartiblangan ketma-ketlik va kerakli element va topilgan elementning indeksini aylantiring. Agar buyum topilmasa, funktsiya -1 qaytishi kerak. 4. Tuyada satrlarni qabul qiladigan funktsiyani yozing histr "( ThisIsCamelCased ) va ularni" ilon registri "ga o'zgartiradi. ( bu_is_camel_cosed ). Funktsiyani unga argument qo'shish orqali o'zgartiring ajratuvchi, shunday qilib funktsiya konversiyani ham amalga oshirishi mumkin "kabob registri" ga ( bu - tuya sumkasi ).
18 Indekslash va kesish Python ma'lumotlarni keyinroq olish uchun ikkita konstruktsiyani taqdim etadi. ketma-ketliklar (ro'yxatlar, bog'ichlar va hatto torlar). Bu dizayn haqida indekslash va kesish. Indekslash sizga ma'lumot olishga imkon beradi ketma-ketlikdagi alohida elementlar va tilimlar uchun ketma-ketliklarni ajratib olish. 18.1. Indekslash Indekslash allaqachon ro'yxatlar uchun namoyish qilingan. Ustida- masalan, agar sizda hayvonlarning nomlari ko'rsatilgan ro'yxat bo'lsa, qila olasiz Indeks bo'yicha elementlarni tanlang: >>> my_pets = ["it", "mushuk", "qush"] >>> my_pets [0] "it"
Eslatib o'tamiz, Pythonda indeksatsiya 0 dan boshlanadi. Ajratish uchun birinchi element, 1 emas, balki 0 indeksidan foydalaning. Python elementlarga kirishning qulay usulini ta'minlaydi salbiy ko'rsatkichlar bo'yicha. Indeks -1 oxirgi elementni bildiradi, Ushbu yozuv ko'pincha yarim sharlar uchun ishlatiladi ro'yxatning oxirgi elementini o'qish: >>> my_pets [-1] "qush"
164 18-bob. Indekslash va kesish Python-ni yaratuvchisi Gido van Rossum o'z tvitida qanday qilishni tushuntirib berdi indeksning salbiy qiymatlarini tushunish: “... To'g'ri yondashuv [manfiy indeksatsiyaga] a [-X] ni " len (a) -X] " deb izohlang " @gvanrossum Indekslash operatsiyalari qulflar va qurilish bilan ham amalga oshirilishi mumkin kami: >>> ("Fred", 23, "Katta") [1] 23 >>> "Fred" [0] 'F' Ba'zi bir turlari, masalan, to'plamlar, operatsiyalarni qo'llab-quvvatlamaydi indekslash. Agar siz o'z sinfingizni aniqlamoqchi bo'lsangiz, indekslash operatsiyalarini o'tkazish, .__ getitem__ usulini amalga oshirish . -3 Indekslarga misollar Navbat Indeks
01234567 ma'lumotlar.csv " "
-3 -1 Salbiy indeks data.csv [0] data.csv [-3] Anjir. 18.1. Ijobiy va salbiy indeks qiymatlari 18.2. Bo'laklar Butun sonli indeksda bitta elementni olishdan tashqari, siz Keyinchalik olish uchun siz tilimdan foydalanishingiz mumkin telnosti. Bir tilim ixtiyoriy bo'lmagan dastlabki indeksni o'z ichiga olishi mumkin
18.2. Bo'laklar 165 yakuniy indeks va qo'shimcha qiymat (barcha qiymatlar bo'lingan- ustunlar). Ro'yxatning dastlabki ikkita elementini ajratib olish uchun bittasini tanlang: >>> my_pets = ["it", "mushuk", "qush"] #list >>> chop etish (my_pets [0: 2]) ['it', 'mushuk'] Eslatib o'tamiz, Pythonda yarim ochiq intervallardan foydalaniladi . Kutish sharbat yakuniy indeksga etadi, ammo uni o'z ichiga olmaydi. Ta'kidlanganidek oldin, diapazon funktsiyasi ikkinchi parametr bilan ham xuddi shunday ishlaydi. Slicer misollar Navbat
Indeks 01234567
ma'lumotlar.csv " " -8-7-6-5-4-3-2-1 Salbiy indeks "data.csv" [0: 4] "data.csv" [5: 8] "data.csv" [: 4] "data.csv" [- 8: -4] "ma'lumotlar" "data.csv" [5:] "data.csv" [- 3:] "csv"
Download 363.98 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling