Loading...

A-dan Z-yə Python trikləri

Kamran Nərimanlı Author
25 Avqust, 2022 icon-read 643 oxunma

A-dan Z-yə Python trikləri

Proqramlaşdırma dillərində təcrübəmizin az və ya çox olmasından asılı olmayaraq Python insan dilinə ən yaxın proqramlaşdırma dili olduğundan ilkin mərhələdə öyrənilməsi və istifadəsi digər dillərlə müqayisədə çox asandır. Pyhtonun asan anlaşılan sintaksisə sahib olması, yüzlərlə library və frameworkləri özündə cəmləməsi, Big Data, Machine Learning və Cloud Computing üçün çox geniş və əlverişli imkanlar təmin etməsi onun çoxsaylı proqramlaşdırma dilləri içərisində ön sıralarda qərarlaşmasına səbəb olur.

 

Global səviyyədə və yorucu olmayan readability xüsusiyyətinə malik kod yazmaq hal-hazırda həm makro miqyasda əmək bazarında yüksək perspektivli karyera cığırına qədəm qoymaq üçün, həm də mikro miqyasda iş mühitində məhsuldarlığı artırmaq üçün mühim amillərdən biridir. Python proqramlaşdırma dilini öyrənməyə yeni başlayanlar üçün bu xüsusiyyətə malik olmalarını gözləmək heç də rasional olmaz. Lakin vaxt keçdikcə əmək bazarında kəskinləşən mübarizə Python istifadəçilərindən minimum səviyyədə  belə olsa clean coding bacarığına yiyələnməyi zəruri edir. Bəs hansı best practice triklər vasitəsilə biz öz kodumuzu daha təbii görünməyinə nail omaqla yanaşı həmçinin qısa yollarla kodlaşdırmaya ayırdığımız vaxtı minimuma endirə bilərik?

Triklər

1. Raw loops əvəzinə List comprehensionlardan istifadə etmək.

Python öyrənməyə ilk başlayanlar çox vaxt listin doldurulması üçün dövrlərdən istifadə edir. Buna misal kimi aşağıdakı kod blokunu göstərə bilərik.

Lakin 4 sətrlik kod blokunu 2 sətrə endirməklə həm daha səliqəli, pythonic kod bloku yaratmış olarıq, həm də sürətimizi artırmış olarıq.

2. List comprehension əvəzinə Generator istifadə etmək.

Yuxarıda göstərilən üsulla biz asanlıqla cəmi tapa bilərik. Lakin biz eyni dərəcədə asan üsulla həm cəmi tapa bilərik həm də yaddaşa qənaət etmiş ola bilərik. Bunun üçün biz list əvəzinə generatordan istifadə etmək tövsiyyə olunur.

Hər iki metod bizə eyni nəticəni verdiyi halda biz “sample” və “sample2” obyektlərinin yaddaşda tutduğu yeri müqayisə etdikdə nəticələrin gizlənmiş fərqi aydın olur.

3. List daxilindəki stringləri dövr əvəzinə .join() metoduyla birləşdirmək.

Yuxarıda göstərilmiş stringlərdən ibarət listi birləşdirmək üçün bəzən dövrlərdən istifadə olunur.

join() metodu bizə dövrdən istifadə etmədən daha asan yolla eyni əməliyyatı tamamlamağa şərait yaratmaqdan əlavə bizə qaytarılan stringlərin arasında məsafə ( məsafə əvəzinə stringləri istənilən simvol ilə ayırmaq mümkündür ) qoyaraq stringlərin birbirinə bitişik olmadan print etmək imkanı yaradır.

4. If statementini çoxsaylı check etməsini sadələşdirmək .

Orange obyektinin fruit listində olub olmamağını yoxlamaq üçün aşağıdakı üsuldan istifadə təəssüf ki rast gəlinən və heç də pythonic olmayan bir yoldur.

Best practice və effektivlik bizdən tələb edir ki, biz hər bir checki manual olaraq yazmaq əvəzinə listin öz elementləri üzərindən icra edək. Bu üsulla biz həm də PEP 8 tövsiyyələrinə riayət etmiş olarıq.

5. Tək sətirdən ibarət if-else statmenti :

Bəzi hallarda bizə təqdim olunmuş şərtlər imkan yaradır ki if-else statementini çox saylı sətirlərdən ibarət kod bloku olaraq yazmaqdansa bütün statementi bir sətirə sığdıraq.

Əgər biz watermelon obyektinin fruits listində olmasını şərtləndiririksə bu zaman biz məntiqi birbirindən fərqlənməyən iki üsuldan istifadə edə bilərik:

5.1)

5.2)

Çox aydın görünür ki, ikinci üsul vasitəsilə lazım olmayan çoxsaylı sətir istifadəsini ləğv etmək mümkündür.

6. List daxilindəki elementləri indeksləri ilə birlikdə print etmək

Fruits listindəki elementləri müvafiq olaraq hər birinin indeksi ilə birlikdə print etmək kimi bir əməliyyat icra etmək lazım gəldikdə bəzən aşağıdakı best practice olmayan üsuldan istifadə praktikada heç də nadir rastlanmır.

Lakin biz enumerate() köməkliyi ilə həm index obyektini özümüz yaratmadan, həm də print ediləcək indeksin hansı ədəddən başlayacağını təyin edərək bizdən tələb edilən əməliyyatı tamamlamış olarıq.

7. Unpacking

Elementlərin hər birini ayrı-ayrı obyektlərə necə mənimsədək və bunu yalnız bir sətir kod yazaraq edək? Burada unpacking köməyimizə çatır.

Güman edək ki, bizə tərkibindəki elementlərinin  sayı çox olan obyekt təqdim olunur və bizə yalnız üç elementi hər birini ayrı dəyişənə mənimsətmək tələb olunur. Bundan əlavə olaraq, biz mənimsənilməyən elementlərin hamısını sadəcə bir dəyişənə mənimsətməliyik. Unpacking bu situasiyada da işimizi asanlaşdırır.

Nəzərə almaq lazımdır ki, print zamanı * simvolundan istifadə etmədikdə nəticə list formasında qayıdır.

8. If statementində müqayisə operatorları ilə sadələşdirmə

Əgər biz dəyəri 20-ə bərabər olan x dəyişəninin eyni zamanda 30-dan kiçik və 10-dan böyük olduğunu yoxlamaq istəyiriksə aşağıda göstərilmiş üsulla şərtin doğruluğunu yoxlaya bilərik.

Ancaq biz bundan daha da sadə və sürətli üsul istifadə edə bilərik.

9. Təkrarlanan stringlərin yazılması

Bizdən “ wow wow wow wow wow ” stringini çap etməyimiz tələb olunur. Stringin integerə vurula bilməsini bilməyən istifadəçi bu tapşırığı aşağıdakı heç də yanlış olmayan üsulla həll edə bilər.

Lakin biz təkrarlanan stringi integerə vuraraq həm vaxta qənaət etmiş olarıq, həm tapşırığı yerinə yetirmiş olarıq, həm də daha pythonic kod yazmış olarıq.

Yekun

Biz bu yazımızda saysız Python triklərindən sadəcə ən çox istifadə olunan doqquzunu sadaladıq. İstifadə yerlərindən asılı olaraq müxtəlif triklər müxtəlik yollarla bizim köməyimizə çata bilər. Lakin unutmamaq tövsiyyə olunur ki, nadir hallarda belə olsa haqqında danışdığımız qısa yollar əks təsir də göstərə bilər. Çeşidli situasiyalarda dəfələrlə təcrübədən keçirdərək bu tip əks təsirlərdən yan keçmək lazımdır. Nəticədə biz həm özümüz ,həm də qarşı tərəf üçün oxunması və debug edilməsi rahat kod bloku yazmış oluruq.