Skip to content

Bu repo Azərbaycan dilində python müsahibə sual və cavabları üçün yaradılmışdır.

License

Notifications You must be signed in to change notification settings

JahanaSultan/python_musahibe_suallari

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 

Repository files navigation

Python Müsahibə Sual-Cavabları

Bu repozitoriyada Python ilə bağlı müsahibə sual-cavabları toplanılır. Siz də bu repozitoriyaya əlavələr edə bilərsiniz. Əlavələriniz üçün pull request göndərə bilərsiniz.

İçindəkilər


Basic Python müsahibə sualları

  1. Python nədir?
  2. Pythonun versiyaları
  3. Pythonun faydaları
  4. Pythonun dezavantajları
  5. Pythonun istifadə sahələri
  6. Listləri tuple-lardan ayıran nədir?
  7. pep8 nədir?
  8. Python-da "==" və "is" operatorları arasındakı fərq nədir?
  9. Python-da yaddaş necə idarə olunur?
  10. PYTHONPATH nədir?
  11. Python modulları nələrdir?
  12. Python namespaces nələrdir?
  13. Python-da miras alma nədir?
  14. Scope resolution nədir?
  15. Python-da dictionary nədir?
  16. Python-da funksiyalar nədir?
  17. Python-da init nədir?
  18. Python-da yayğın olaraq istifadə olunan built-in data types nələrdir?
  19. Python-da shallow copy ilə deep copy arasındakı fərq nədir?
  20. Python-da type conversion nədir?
  21. Windows üzərində Pythonun quraşdırılması və sistem yolu dəyişənin təyini necə edilir?
  22. Python'da array-lər və list-lər arasındakı fərq nədir?
  23. Python case sensitive-dir?
  24. [::-1] nə iş görür?
  25. Python paketləri (packages) nələrdir?
  26. Python-da dekoratorlar (decorators) nələrdir?
  27. Python-da sıralama məcburidir (indentation required)?
  28. "break", "continue" və "pass" ifadələri necə işləyir?
  29. Python-da bir siyahının elementlərini yerində təsadüfi şəkildə necə qarışdıra bilərəm?
  30. Python-da çox sətirli şəkildə necə şərh yazmaq olar?
  31. Python dili nə cür bir dil sayılır - proqramlaşdırma dili və ya skript dilidir?
  32. Mənfi indekslər nədir və nə üçün istifadə olunurlar?
  33. Bir sətirdəki bütün simvolların alfanumeric olduğunu necə yoxlamaq olar?
  34. List-lərdə Del və Remove() arasındakı fərq nədir?
  35. Python-da split() və splitlines() arasındakı fərq nədir?

Intermediate Python Müsahibə Sualları

  1. Python-dakı "re" modulunun split(), sub() və subn() metodlarını açıqlayın.
  2. Python literalı nə deməkdir?
  3. Python-da map funksiyası nədir?
  4. Python-dakı generatorlar (generators) nələrdir?
  5. Python-dakı iterasiya nədir?
  6. Python-dakı "yield" ifadəsi nədir?
  7. Python dilində dəyişənləri müvafiq veri tipləri ilə təyin etmək məcburiyyəti varmı?
  8. Dict və List comprehensions nə deməkdir?
  9. Python-da çoxlu miras dəstəklənir?
  10. Range və xrange arasında fərq nədir?
  11. "Pickling və unpickling" nə deməkdir?
  12. Tkiner nədir?
  13. Python tam obyekt yönümlüdürmü?
  14. Python-da bütün file prosesləri üçün istifadə olunan modullar nələrdir?
  15. Python-dəki fayl ilə bağlı modulların funksiyaları nədir?
  16. with ifadəsinin istifadəsi və sintaksisi necədir?
  17. Faylın məzmununu tərsinə çevirmək üçün funksiya yazın.
  18. Python-da "self" nədir?
  19. Yazmaq üçün c:\hello.txt faylını açmaq əmrini yazın?
  20. len() nə edir?
  21. Pythonda *args və **kwargs nə deməkdir?
  22. Dublikat elementləri siyahıdan necə siləcəksiniz?
  23. Python ilə faylı necə silə bilərəm?
  24. Fayldakı təsadüfi sətri necə oxumaq olar?
  25. Mətn faylında sətirlərin ümumi sayını hesablamaq üçün Python proqramı yazın?
  26. “is”, “not” və “in” operatorlarının məqsədi nədir?
  27. Python hər dəfə çıxdıqda niyə bütün yaddaş ayrılmır?
  28. Pythonda ternary operatorlardan necə istifadə etmək olar?
  29. Python array-nə dəyərləri necə əlavə etmək olar?
  30. Python array-indəki dəyərləri necə silmək olar?
  31. Python-da ədədi siyahını sort etmək üçün kod yazın?
  32. Python-da sorting alqoritmləri nələrdir?
  33. Fayldakı böyük hərflərin sayını hesablamaq üçün effektiv kod yaza bilərsinizmi?
  34. Python-da bir siyahını necə tərsinə çevirmək olar?
  35. Python-da list-dən sonuncu obyekti necə siləcəksiniz?
  36. Python-da bir siyahıda təkrarlanan elementləri necə tapa bilərəm?
  37. Python-da təsadüfi ədədləri necə yaratmaq olar?
  38. Bir sətri kiçik hərflərə necə çevirmək olar?
  39. Python-da bir sətri böyük hərflərə necə çevirmək olar?
  40. Niyə Python-da list-lər əvəzinə NumPy array-lərindən istifadə edilir?
  41. Python-da polimorfizm nədir?
  42. Python-da inkapsulyasiya nədir?

Advanced Python Müsahibə Sualları

  1. Python-da lambda funksiyası nədir?
  2. Python-da multi-threading nədir?
  3. append() və extend() metodları arasındakı fərq nədir?
  4. Python Flask verilənlər bazası sorğularını necə idarə edir?
  5. Python-da docstring nədir?
  6. Python-da multi-threading-in məhdudiyyətləri nələrdir?
  7. Python-da slicing nədir?
  8. Funksional proqramlaşdırma nədir? Python funksional proqramlaşdırma tərzinə əməl edirmi? Əgər belədirsə, Python-da funksional yönümlü proqramlaşdırmanı həyata keçirmək üçün bir neçə metodu sadalayın.
  9. Python-da monkey patching nədir?
  10. Python-da / və // operatoru arasındakı fərq nədir?
  11. Pandas nədir?
  12. Dataframes nədir?
  13. Dataframe-də itkən dəyərləri necə aşkar etmək və onlarla necə başa çıxmaq olar?
  14. Regresiya nədir?
  15. Classification nədir?
  16. SVN nədir?
  17. Python istifadə edərkən faizləri hesablamaq üçün ən asan yol nədir?
  18. İterativ metoddan istifadə etmədən verilmiş sətirin palindrom olub-olmadığını yoxlamaq üçün Python proqramı yazın?
  19. Siyahıdakı ədədlərin cəmini hesablamaq üçün Python proqramı yazın
  20. Bubble çeşidləmə alqoritmini yerinə yetirmək üçün Python-da proqram yazın
  21. Ulduz üçbucağını yaratmaq üçün Python-da proqram yazın?
  22. Python-da Fibonacci seriyası yaratmaq üçün proqram yazın
  23. Ədədin sadə olub olmadığını yoxlamaq üçün Python-da proqram yazın
  24. Pythonda simvolun ASCII dəyərini çap etmək üçün proqram yazın
  25. Insertion sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın
  26. Merge sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın
  27. Quick sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın
  28. Timsort alqoritmini yerinə yetirmək üçün Python-da proqram yazın
  29. Python-da bir sətri tərsinə çevirmək üçün proqram yazın
  30. print() funksiyasının parametrləri nələrdir?

Python nədir?

Python proqramlaşdırma dili Guido van Rossum tərəfindən yaradılmışdır və 1991-ci ildən bəri inkişaf etdirilir. Python, yüksək səviyyəli bir proqramlaşdırma dilidir. Şəffaf sintaksisi, sadə sintaksis qaydaları və geniş bir standart kitabxana ilə xüsusiyyətlənir. Python-da yazılan proqramlar bir çox sahələrdə tətbiq edilir: web proqramlaşdırma, data analitika, süni intellekt, oyun proqramlaşdırma və daha çoxu. Python geniş bir cəmiyyət tərəfindən dəstəklənir və açıq mənbəlidi. Bu, istifadəçilərə geniş bir dəstək və resurslar təmin edir. Python öyrənilməsi asan və effektiv olmağı ilə tanınan bir dildir.

Pythonun versiyaları

Python 2 və Python 3 olmaqla iki əsas versiyası var. Python 2-nin ən son versiyası 2.7 idi. Python 2-nin ən son versiyası 2020-ci ildən sonra dəstəklənmir. Python 3.0 3 dekabr 2008-ci ildə buraxıldı. O, əvvəlki versiyada müəyyən qüsurları düzəltmək üçün nəzərdə tutulmuşdu.

Pythonun faydaları

  • Sadə syntax: Python, sadə sintaksisə sahibdir. Bu, kodun oxunmasını və anlaşılmasını daha asanlaşdırır. Yeni başlayanlar üçün idealdır və kodun daha sürətli yazılmasını təmin edir.
  • Geniş kitabxana dəstəyi: Python, zəngin bir standart kitabxana təklif edir. Bu kitabxana, fərdi funksiyaların və göndərilənlərin yenidən icrasına ehtiyac qalmadan çeşitli təhlükəsizlik, data analitikası, web development və s. üçün hazır modullar təmin edir.
  • Çox yaxşı bir cəmiyyət: Python geniş bir cəmiyyət tərəfindən dəstəklənir. İnternetdə çox sayda mənbə, tutorial, forum və topluluq mövcuddur. Bu, istifadəçilərin problemlərini həll etmək üçün dəstək və məsləhətlər əldə etmələrini asanlaşdırır.
  • Platforma-müstəqil: Python, Windows, macOS və Linux kimi əsas əməliyyat sistemləri üzərində işləyir. Bu, kodunuzun platformaya bağlı olmadan istifadə olunmasına imkan verir.
  • Çox tərəfli: Python, çox tərəfli bir dildir. Web development, data analitikası, süni intellekt, avtomatlaşdırma və daha bir çox sahədə istifadə edilir. Bu, Python istifadə edən iş imkanlarının və karyera perspektivlərinin çeşidini artırır.
  • İnteraktivlik: Python interaktiv bir dil olaraq tanınır. İnteraktiv bir shell vasitəsilə kodunuzun addımlarını dərhal nəticələri görmək üçün sətir sətir icra edə bilərsiniz. Bu, həm yeni başlayanlar, həm də proqramçılar üçün səhv tapma və kodun davranışını anlamaq üçün faydalıdır.

Bu, yalnız Pythonun faydalarından bəziləridir. Pythonun sadə bir dil olması, geniş kitabxana dəstəyi və məşhur cəmiyyəti, onu bir çox proqramçılar üçün seçilən dil halına gətirir.

Pythonun dezavantajları

Python çox üstünlüklərə malik olsa da, bir neçə dezavantaja da sahibdir. Python'un bəzi mənfi xüsusiyyətləri:

  • Çox Sürətli Deyil: Python, C və Java kimi daha effektiv dillərlə müqayisədə çox daha yavaş işləyir.
  • Yaddaş İstifadəsi Çoxalır: Python yaddaşı azaltmaq üçün optimize edilməmişdir. Daha qənaətli bir dil ilə yazılmış proqramla müqayisədə Python on dəfə çox RAM istifadə edə bilər.
  • İş vaxtı xətalarının qarşısını almaq daha çətindir: Python runtime'a qədər tərcümə edilmir və dinamik tipdədir. Bu səbəbdən, tərcüməçi tərəfindən müdafiə edilən bir çox problem proqram işə salınana qədər görünmür.
  • Mobil və Masaüstü Tətbiqlərdə Az Tərəfdaşlıq: Yavaşlığı və çox yaddaş istifadəsi səbəbindən Python mobil sahədə qazanclar əldə etməmişdir. Mobil tətbiqlər üçün bəzi Python inkişaf alətləri mövcuddur, lakin digər dillər üçün olan framework-lardan daha məhdudiyyətlidir.
  • Verilənlər bazasına giriş üçün optimallaşdırılmayıb: Python, bəzi digər dillərdən fərqli olaraq, verilənlər bazaları ilə işləmək üçün güclü, yüksək keyfiyyətli və istifadəsi asan bir interfeysə malik deyildir.
  • Multithreading Dəstəyi yoxdur: Arxitekturasına görə Python çox iş parçacığını dəstəkləmir.

Pythonun istifadə sahələri

Python, çox tərəfli bir dildir. Pythonun istifadə sahələri:

  • Web proqramlaşdırma: Python, web proqramlaşdırma üçün istifadə edilən ən populyar dillərdən biridir. Django, Flask, Pylons, Pyramid və CherryPy kimi bir çox Python framework-ları mövcuddur. Bu framework-lar, web proqramlaşdırma üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.
  • Data analitikası: Python, data analitikası üçün istifadə edilən ən populyar dillərdən biridir. Pandas, NumPy, SciPy və Scikit-Learn kimi bir çox Python kitabxanası mövcuddur. Bu kitabxanalar, data analitikası üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.
  • Süni intellekt: Python, süni intellekt üçün istifadə edilən ən populyar dillərdən biridir. TensorFlow, Keras, PyTorch və Theano kimi bir çox Python kitabxanası mövcuddur. Bu kitabxanalar, süni intellekt üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.
  • Oyun proqramlaşdırma: Python, oyun proqramlaşdırma üçün istifadə edilən ən populyar dillərdən biridir. PyGame, PyKyra, PySoy və Panda3D kimi bir çox Python framework-ları mövcuddur. Bu framework-lar, oyun proqramlaşdırma üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.
  • Avtomatlaşdırma: Python, avtomatlaşdırma üçün istifadə edilən ən populyar dillərdən biridir. Ansible, Salt, OpenStack, OpenCV və Boto kimi bir çox Python framework-ları mövcuddur. Bu framework-lar, avtomatlaşdırma üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.
  • Finans: Python, finans üçün istifadə edilən ən populyar dillərdən biridir. Zipline, PyAlgoTrade, Pybacktest və Pyfolio kimi bir çox Python framework-ları mövcuddur. Bu framework-lar, finans üçün istifadə edilən bir çox digər dillərdən daha sürətli və effektivdir.

Listləri tuple-lardan ayıran nədir?

  • Listlər dəyişdirilə bilən, tuple-lar dəyişdirilə bilməz.
  • Listlər, tuple-lardan daha çox yaddaş istifadə edir.
  • Listlər, tuple-lardan daha yavaş işləyir.
  • Listlər, tuple-lardan daha çox funksiyaya malikdir.
  • Listlərin gözlənilməz dəyişikliklərlə üzləşmə ehtimalı daha yüksəkdir, bu da onları səhvlər baxımından daha az etibarlı edir. Tuples gözlənilməz dəyişikliklərə qarşı müqaviməti sayəsində artan etibarlılıq təklif edir.

pep8 nədir?

Python-da PEP, Python Enhancement Proposal deməkdir. O, maksimum aydınlıq və oxunaqlılığı təmin etmək üçün Python kodunun hazırlanması və strukturlaşdırılması üçün optimal yanaşmanı əks etdirən təlimatlar toplusundan ibarətdir. PEP 8, Python dilində kod yazarkən daha düzgün tərtibatlanmış və oxunaqlı kodlar üçün bir qayda kitabçası kimi düşünülə bilər.

Python-da "==" və "is" operatorları arasındakı fərq nədir?

Python-da ==is operatorları arasındakı fərq onlardan birinin bərabərlik (equality) yoxlamaq, digərinin isə kimlik (identity) yoxlamaq üçün istifadə olunmasıdır. == operatoru iki dəyişkənin dəyərlərinin bərabər olub-olmadığını yoxlayır. "is" operatoru isə iki dəyişkənin eyni obyektə işarə edib-etmədiyini yoxlayır. Məsələn:

x = [1, 2, 3]
y = [1, 2, 3]

print(x == y) # True
print(x is y) # False

Bu kodda x və y dəyişkənləri eyni dəyərli siyahılara işarə edirlər, buna görǝ dǝ == operatoru True qaytarır. Lakin x və y fǝrqli obyektlrdir və ya fǝrqli yaddaş ünvanlarına işarǝ edirlər, buna görǝ dǝ is operatoru False qaytarır. Bunu id() funksiyası ilǝ tǝsdiqlǝmǝk mümkündür:

print(id(x)) # 140476144562688
print(id(y)) # 140476144562944

Bu kodda x vǝ y-nin fǝrqli id-ləri olduğunu görürük. id() funksiyası obyektin yaddaş ünvanını qaytarır. Python-da hǝr obyektin unikal və sabit bir id-si var. is operatoru əslinda iki obyektin id-lərinin bǝrabǝr olub-olmadığını yoxlayır.

Buna görǝ, Python-da bǝrabǝrlik v kimlik arasında böyük fǝrq var. Bütün halarda == operatorunu istifadə etmǝk lazımdır, xüsusi hallarda isə is və ya is not operatorlarını istifadə etmǝk lazımdır. Bu xüsusi hallardan biri None ilǝ müqayisə etmǝkdir. None ilǝ müqayisə etmǝk üçün həmişə is və ya is not istifadə etmǝk lazımdır. Məsələn:

x = None
if x is None:
    print("x is None")

Bu kodda x dövrünün None olub-olmadığını yoxlayır. Bu halda == istifad etmǝk səhv olar.

Python-da yaddaş necə idarə olunur?

  • Yaddaşın ayrılması: Bir Python proqramı başladıqda, yaddaşda programın dəyişənləri, obyektləri və digər məlumatları saxlamaq üçün lazım olan yer ayrılır. Bu prosesə yaddaşın ayrılması deyilir.
  • Yaddaşın istifadəsi: Proqram işləndikcə, dəyişənlər, obyektlər və digər məlumatlar yaddaşda saxlanır və istifadə olunur. Python, yaddaşın avtomatik idarə edilməsini təmin edir, yəni proqramçının bu prosesi idarə etməsinə ehtiyac yoxdur. Python yaddaş idarə etmək üçün bir məkan toplama (garbage collection) mexanizması istifadə edir.
  • Garbage Collection (Məkan Toplama): Python, artıq istifadə edilməyən məlumatların təyin olunan yaddaşdan silinməsi üçün avtomatik kəşikləmə (garbage collection) mekanizmasını tətbiq edir. Bu proses, artıq referanslı olmayan obyektləri təyin edilən yaddaşdan təmizləyir və bu yolla yaddaşın daha effektiv istifadəsini təmin edir. Python'un garbage collection mexanizması referans sayma ilə işləyir. Obyektlərə referans olduğu müddətdə yaddaşda qalır və referans sayısı sıfıra çatdıqda silinir.

Python ayrıca yaddaşın effektiv idarə edilməsi üçün bazı yaddaş optimizasiya strategiyalarına da malikdir. Bunlar arasında referans sayma, obyektlərin dəyişdirilməz olması (immutable) və yaddaşın daha verimli istifadəsi üçün verilənlər tipi optimizasiyası kimi məsələlər yer alır.

PYTHONPATH nədir?

PYTHONPATH, Python tərəfindən modulların axtarılması üçün istifadə olunan bir mühit dəyişənidir. PYTHONPATH dəyişəni, Python modullarının yerləşdiyi qovluqları təyin edir.

Python modulları nələrdir?

Python modulları, bir proqramda təkrar istifadə oluna bilən funksiyalar, dəyişənlər və obyektlər kimi mənbələrdən ibarət fayllardır. Modullar Python kodunun təşkil edilən və yenidən istifadə edilə bilən hissələridir.

Python modulları aşağıdakı hallarda istifadə oluna bilər:

  • Standart Kitabxanalar: Python, dilin özü ilə birlikdə gələn bir çox standart modul təklif edir. Bu modullar, müxtəlif funksiyonallığı əhatə edir və misal üçün math, datetime, random, os, sys kimi modulları içərir. Bu modulları import edərək hazır funksiyalardan və prosedurlardan istifadə edə bilərsiniz.
  • Üçüncü Tərəf Kitabxanalar: Python-da bir çox üçüncü tərəf modul mövcuddur. Bu modullar, Python cəmiyyəti tərəfindən hazırlanan və Python ilə birlikdə istifadə edilən modullardır. Misal üçün, NumPy, Pandas, Matplotlib, Django, Flask, requests kimi kitabxanalar geniş funksionallıq təklif edir və çeşidlənmək istəyən proqramlar üçün güclü alətlər təmin edir.
  • Xüsusi Modullar: Xüsusi modullar, proqramçının təyin etdiyi və öz təşkilatına uyğun olan modullardır. Bu modullar proqramın öz tələblərinə cavab verən xüsusi funksiyonallığı təmin edir. Bu modulları öz proqramınıza əlavə edərək xüsusi funksiyalar və prosedurlar əlavə edə bilərsiniz.

Modullar Python-da kodun daha modullu və təşkilatlandırılmış olmasını təmin edir. Onlar kodun bənzərsiz funksiyonal komponentlərə ayrılmasına imkan verir və yenidən istifadə olunan kod tərəfindən təmin edilən funksiyaları təşkil edir. Bu, kodun oxunması, yaxşılaşdırılması və yeniden istifadəsi üçün daha yaxşı bir struktur və təşkilat qurulmasını təmin edir.

Python namespaces nələrdir?

Python namespaces (ad sahələri), sadə deyişlə adların qruplarıdır. Hər bir ad sahəsi, Python proqramında adların xüsusiyyətlərinin saxlandığı və məlumatlara çatmağa imkan verdiyi bir məkanı təmsil edir. Python-da üç fərqli növ ad sahələri mövcuddur:

  1. Global Ad Sahəsi: Global ad sahəsi, bir Python skriptinin daxilində, yəni bütün modulda əldə edilən adlara görünürlük təmin edir. Global adlar, skriptin istifadə etdiyi modullardan daxil olunan funksiyalar və siniflər arasında görünə bilər. Həmçinin, global adlar, bir moduldan başqa bir modula import edilən adlar kimi də əldə edilə bilər.
  2. Yerli Ad Sahəsi: Yerli ad sahəsi, bir funksiyanın daxilində tanımlanan adlara görünürlük təmin edir. Yerli adlar, yalnız funksiya tərəfindən əldə edilə bilər və digər funksiyalar tərəfindən gizli qalır. Yerli ad sahəsi, hər bir funksiya tətbiqində müstəqil olaraq yaradılır və funksiyanın icrası zamanı aktivdir.
  3. Enclosing Ad Sahəsi: Enclosing ad sahəsi, bir iç funksiyanın daxilində tanımlanan adlara görünürlük təmin edir. Bu ad sahəsi, iç funksiyaların daxilində yerləşən funksiya tərəfindən təyin olunur. İç funksiya, əvvəlki funksiyanın daxilindəki adlara çatmağa imkan verir və bu sayədə hər bir iç funksiya öz "qabaqcadan" yerli ad sahəsini əldə edir.

Ad sahələri, adların mövcudluğunu və görünürlüyünü tənzimləyir. Onlar ad konfliktlərini önləyir və adlara düzgün bir şəkildə çatmağa imkan verir.

Python-da miras alma nədir?

Python-da miras alma, obyektləri bir-birindən təşkil etmək üçün istifadə olunan bir obyekt mühərrikləşdirmə məntiqidir. Miras alma, mövcud obyektlərin funksialarını və xüsusiyyətlərini yeni obyektlərə və ya siniflərə ötürmək üçün istifadə olunur.

Python-da miras alma prosesi, bir "üst sinif" və bir "alt sinif" arasında gerçəkləşir. Üst sinifdəki xüsusiyyətlər və metodlar alt sinifdə də ötürülərək alt sinifin onları istifadə etməsinə imkan verir. Bu "alt sinifin üst sinifi miras alması" adlanır. Miras alma prosesi, alt sinifin üst sinifin bütün funksialarını əldə etməsini və buna əlavə funksialar əlavə etməsini təmin edir.

Python-da miras alma prosesi aşağıdakı sintaksis ilə tətbiq olunur:

class UstSinif:
    # Ust sinifin xususiyyetleri ve metodlari

class AltSinif(UstSinif):
    # Alt sinifin xususiyyetleri ve metodlari

Burada AltSinif, UstSinif-dən miras alır. AltSinif, UstSinif-ın xüsusiyyətlərini və metodlarını əldə edir və onlara əlavə funksialar əlavə edə bilər.

Python-da, fərqli növ miras alma formalarını var. Ən yaygın olanları aşağıdakılardır:

  1. Single Inheritance (Tək Miras): Bu formada, bir alt sinif yalnız bir üst sinifdən miras alır. Bu, bir hərəkət etmə sətri ilə ifadə edilir: class AltSinif(UstSinif). Alt sinif, üst sinifin xüsusiyyətlərini və metodlarını ötürür.
  2. Multiple Inheritance (Çoxlu Miras): Bu formada, bir alt sinif birdən çox üst sinifdən miras ala bilər. Bu, bir hərəkət etmə sətri ilə ifadə olunur: class AltSinif(UstSinif1, UstSinif2). Alt sinif, bütün üst siniflərin xüsusiyyətlərini və metodlarını ötürür.
  3. Multilevel Inheritance (Çoxlu Səviyyəli Miras): Bu formada, bir alt sinif bir başqa alt sinifdən miras alır. Bu, hərəkət etmə sətrindən asılı olaraq birdən çox səviyyədə ifadə oluna bilər: class AltSinif1(UstSinif)class AltSinif2(AltSinif1). Alt sinif, üst sinifin və ya üst-alt sinifin xüsusiyyətlərini və metodlarını ötürür.
  4. Hierarchical Inheritance (İerarxiyalı Miras): Bu formada, birdən çox alt sinif eyni üst sinifdən miras alır. Bu, bir hərəkət etmə sətri ilə ifadə olunur: class AltSinif1(UstSinif)class AltSinif2(UstSinif). Alt siniflər, üst sinifin xüsusiyyətlərini və metodlarını ötürür.
  5. Hybrid Inheritance (Hibrid Miras): Bu formada, bir alt sinif hem tək miras, hem də çoxlu miras formalarını istifadə edir. Bu, bir hərəkət etmə sətri ilə ifadə olunur: class AltSinif(UstSinif1, UstSinif2, UstSinif3). Alt sinif, birdən çox üst sinifdən xüsusiyyətlər və metodlar ötürür.

Miras alma, kodun yeniden istifadəsini və təşkilatını təmin edir. Üst siniflərdən miras alan alt siniflər, üst sinifdə mövcud olan funksianı təkrar yazmağa ehtiyac duymadan onu istifadə edə bilir. Bu, kodun daha oxunaqlı, düzgün və genişlənən bir struktura malik olmasını təmin edir. Həmçinin, miras alma, obyek yönümlü proqramlaşdırma paradigmalarında polimorfizm və yüklənmiş metodların tətbiqini dəstəkləyir.

Scope resolution nədir?

Python-da scope resolution, bir adın hansı ad sahəsinə aid olduğunu tapmaq üçün istifadə olunan prosesdir. Python-da ad sahələri, adların mövcudluğunu və görünürlüyünü tənzimləyir. Onlar ad konfliktlərini önləyir və adlara düzgün bir şəkildə çatmağa imkan verir.

  • Global Ad Sahəsi: Global ad sahəsi, bir Python skriptinin daxilində, yəni bütün modulda əldə edilən adlara görünürlük təmin edir. Global adlar, skriptin istifadə etdiyi modullardan daxil olunan funksiyalar və siniflər arasında görünə bilər. Həmçinin, global adlar, bir moduldan başqa bir modula import edilən adlar kimi də əldə edilə bilər.
  • Local Ad Sahəsi: Yerli ad sahəsi, bir funksiyanın daxilində tanımlanan adlara görünürlük təmin edir. Yerli adlar, yalnız funksiya tərəfindən əldə edilə bilər və digər funksiyalar tərəfindən gizli qalır. Yerli ad sahəsi, hər bir funksiya tətbiqində müstəqil olaraq yaradılır və funksiyanın icrası zamanı aktivdir.
  • Enclosing Ad Sahəsi: Enclosing ad sahəsi, bir iç funksiyanın daxilində tanımlanan adlara görünürlük təmin edir. Bu ad sahəsi, iç funksiyaların daxilində yerləşən funksiya tərəfindən təyin olunur. İç funksiya, əvvəlki funksiyanın daxilindəki adlara çatmağa imkan verir və bu sayədə hər bir iç funksiya öz "qabaqcadan" yerli ad sahəsini əldə edir.

Python-da dictionary nədir?

Pyton-da dictionary verilən tipi həqiqi həyatdakı lüğət mənası ilə çox oxşarlıq təşkil edir. Məsələn 'alma' sözünün ingilis dili lüğətindəki qarşılığı 'apple' kəliməsidir. Dolayısı ilə 'alma' sözü ilə 'apple' sözü arasındakı əlaqəni bu şəkildə ifadə edə bilərik: 'alma':'apple' Bu bizə 'alma' sözünün qarşılığının 'apple' olduğunu açıq şəkildə göstərir. Python-dakı dictionary verilən tipi ilə bu durumu yazacaq olsaydıq aşağıdakı bənzər şəkildə göstərəcəkdik:

my_dict = {'alma':'apple'}

Dictionary key-value cütlüyü ilə təmsil olunur. Burada 'alma' key və 'apple' isə value kimi təmsil olunur. Dictionary sıra indeksi ilə deyil, key vasitəsilə məlumatlara çatmağa imkan verir. Hər bir key, müəyyən bir qiymətə əsasən bənzərsiz və tək olmalıdır. Sözlər dəyişdirilə bilən və müxtəlif verilənləri saxlamaq üçün əlverişlidir.

Python-da funksiyalar nədir?

Funksiyalar sadəcə çağrıldığı zaman işləyən kod bloklarıdır. Funksiyalar proqramımızı daha kiçik və modul hissələrə ayırmağa kömək edir. Proqramımız getdikcə böyüdükcə, funksiyalar onu daha mütəşəkkil və idarəolunan edir. Pythonda funksiya olaraq adlandırılan proses digər programlaşdırma dillərinin bəzilərində “rutin” və ya “prosedur” olaraq adlandırılır. Həqiqətəndə funksiyalar rutin olaraq təkrarlanan tapşırıqları tək bir ad altında birləşdirir və bizi gərəksiz təkrardan qurtardığı kimi ən önəmlisi vaxt itkisinin qarşısını almış olur. Pythonu öyrənməyə ilk başladığımızda funksiyayla artıq tanış olmuş oluruq, print() özü bir funksiyadır və biz ondan heçbir kod yazmadan rahatlıqla istifadə edə bilirik.

Python-da init nədir?

Python siniflərində qorunan init metodu obyekt yönümlü proqramlaşdırma (OOP) terminologiyasındakı konstruktorlar kimi eyni məqsədə xidmət edir. Yeni obyekt yaradıldıqda init metodu avtomatik çağırılır, obyekti işə salır və onun üçün yaddaş ayırır. Bu üsul həm də dəyişənlər üçün ilkin dəyərləri təyin etmək üçün istifadə edilə bilər. İnit metodunun içində sinifin daxili dəyişənlərini təyin edə bilərsiniz. İnit metodunun birinci parametri "self"dir, bu, metodun özünə bir referansdır və sinifdəki digər metodlarda olduğu kimi istifadə olunur. Aşağıdakı sintaksis ilə tətbiq olunur:

class SinifAdi:
    def __init__(self, parametr1, parametr2):
        self.parametr1 = parametr1
        self.parametr2 = parametr2

Python-da yayğın olaraq istifadə olunan built-in data types nələrdir?

Python-də bir sıra built-in verilən tipləri mövcuddur. Bəzi əsas built-in verilən tiplər aşağıdakılardır:

  1. Integer: Tam ədədi ifadə etmək üçün istifadə olunan verilən tipidir. Misal üçün: x = 5
  2. Float: Ondalıq ədədi ifadə etmək üçün istifadə olunan verilən tipidir. Misal üçün: y = 3.14
  3. String (Simvol sətiri): Mətnləri ifadə etmək üçün istifadə olunan verilən tipidir. Misal üçün: name = "John"
  4. Boolean: İstənilən məntiqi dəyərləri ifadə etmək üçün istifadə olunan verilən tipidir. İki dəyərə malik olur - TrueFalse.
  5. List: Birdən çox veriləni bir yerə toplamaq üçün istifadə olunan verilən tipidir. Siyahı içində müxtəlif dəyişənlər saxlaya bilərsiniz. Misal üçün: numbers = [1, 2, 3, 4, 5]
  6. Tuple: Birdən çox veriləni qruplaşdırmaq üçün istifadə olunan verilən tipidir. Tuple dəyişdirilə bilməzdir (immutable) və () ardıcıllığı ilə ifadə olunur. Misal üçün: point = (3, 5)
  7. Dictionary: Açar-qıymət cütlüyündən ibarət olan verilən tipidir. Açarlarla qiymətlərə uyğun gələn verilənləri saxlayır. Misal üçün: person = {"name": "John", "age": 30, "city": "London"}
  8. Set: Birləşik verilənləri toplamaq üçün istifadə olunan verilən tipidir. Təkrarlanan dəyərlərə imkan vermir və sırasızdır. Misal üçün: fruits = {"apple", "banana", "orange"}

Bu yalnız bir neçə builtin verilən tipidir və Python-da daha çox verilən tipi mövcuddur. Hər bir verilən tipi özünəməxsus xüsusiyyətlərə və əməliyyatlara malikdir və proqramçıya çeşit

Python-da shallow copy ilə deep copy arasındakı fərq nədir?

Python'da, "shallow copy" və "deep copy" olaraq adlandırılan iki fərqli kopyalama metodundan istifadə edə bilərsiniz.

Shallow copy, orijinal obyektin referansını kopyalayır. Başqa bir deyişlə, yeni yaradılan obyekt, orijinal obyektin eyni yaddaş ünvanını göstərir. Shallow copy vasitəsilə kopyalanan obyekt, orijinal obyekt ilə eyni verilənlərə sahib olur, amma içərisindəki verilənlər dəyişdirilə bilən elementlərdən ibarətdirsə, dəyişikliklər iki obyekt arasında paylaşılır.

Deep copy isə orijinal obyektin içindəkiləri tamamilə yeni bir yaddaş ünvanına sahib yeni bir obyekt yaradır. Bu metodla kopyalanan obyekt, orijinal obyektin verilərini tam olaraq özündə saxlayır və dəyişikliklər orijinal obyekt ilə kopya arasında paylaşılmaz. Yəni, deep copy vasitəsilə yeni bir obyekt yaradıldığı üçün, orijinal obyektin dəyişdirilməsi deep copy-ə təsir etməz.

Bir obyektin shallow copys-ını yaratmaq üçün Python-dilində "copy" modulundan istifadə edə bilərsiniz, məsələn:

import copy

orijinal = [1, 2, [3, 4]]
kopya = copy.copy(orijinal)

orijinal[0] = 5
orijinal[2][0] = 6

print(orijinal)  # [5, 2, [6, 4]]
print(kopya)  # [1, 2, [6, 4]]

Bir obyektin deep copysını yaratmaq üçün isə "copy" modulunun "deepcopy" funksiyasını istifadə edə bilərsiniz:

import copy

orijinal = [1, 2, [3, 4]]
kopya = copy.deepcopy(orijinal)

orijinal[0] = 5
orijinal[2][0] = 6

print(orijinal)  # [5, 2, [6, 4]]
print(kopya)  # [1, 2, [3, 4]]

Bu nümunələrdə göründüyü kimi, shallow copyda daxilən veriləri dəyişdirmək, obyektin özünü də dəyişdirir, amma deep copyda daxilən veriləri dəyişdirmək, obyektin özünü dəyişdirmir.

Python-da type conversion nədir?

Python-da tip çevirməsi (type conversion) bir verilən tipindən başqa bir verilən tipinə dəyişmək deməkdir. Python çox təhlükəsiz bir dildir və mümkün olduğu qədər avtomatik tip çevirmələrini etməyə çalışır. Ancaq zaman zaman proqramçının açıq şəkildə tip çevirməsinə ehtiyacı ola bilər.

Python-da tip çevirməsi üçün aşağıdakı funksiyalar və metodlar istifadə edilir:

  1. int(): Integer tipinə çevirmək üçün istifadə olunur. Məsələn: x = int(3.14).
  2. float(): Float tipinə çevirmək üçün istifadə olunur. Məsələn: y = float(5).
  3. str(): String sətiri tipinə çevirmək üçün istifadə olunur. Məsələn: name = str(42).
  4. list(): List tipinə çevirmək üçün istifadə olunur. Məsələn: numbers = list((1, 2, 3, 4, 5)).
  5. tuple(): Tuple tipinə çevirmək üçün istifadə olunur. Məsələn: point = tuple([3, 5]).
  6. dict(): Dictionary tipinə çevirmək üçün istifadə olunur. Məsələn: person = dict(name="John", age=30).
  7. set(): Set tipinə çevirmək üçün istifadə olunur. Məsələn: fruits = set(["apple", "banana", "orange"]).
  8. ord(): Bu funksiya Unicode simvolunu təmsil edən tam ədədi qaytarır. ord('a').
  9. hex(): Bu funksiya tam ədədi onaltılıq ədədə çevirir. hex(255).
  10. oct(): Bu funksiya tam ədədləri səkkizlik sətirlərə çevirir. oct(8).
  11. bin(): Bu funksiya tam ədədləri ikili ədədə çevirir. bin(2).
  12. chr(): Bu funksiya tam ədədi Unicode simvoluna çevirir. chr(97).
  13. bool(): Bu funksiya dəyişəni boolean tipinə çevirir. bool(0).

Bu funksiyalar və metodlar ilə Python-da fərqli verilən tiplər arasında asanlıqla tip çevirmələri həyata keçirilə bilir. Ancaq tip çevirməsini edərkən verilən tiplər arasında uyğunsuzluq mövcud ola bilər və bu, səhvə səbəb olacaqsa, bu prosesi nəzarət altında saxlamağınız tövsiyə olunur.

Windows üzərində Pythonun quraşdırılması və sistem yolu dəyişənin təyini necə edilir?

Windows əməliyyat sistemində Pythonun quraşdırılması və sistem yolu dəyişənin təyini aşağıdakı addımlarla edilir:

  1. Pythonun son rəsmi saytından istədiyiniz Python versiyasını yükləyin. Yükləmə səhifəsində, Windows üçün uyğun olan yükləyici faylı seçin və yükləmə prosesini başladın. İndi sizin Python proqramınızın yükləndiyini düşünürək növbəti addıma keçək.

  2. Quraşdırıcıyı başladın və tələbat olunan konfiqurasiyaları seçin. Əksərən dəfələrlə tələb edən "Add Python to PATH" seçimini qeyd edin. Bu, Pythonun sistem yoluna avtomatik olaraq əlavə edilməsinə kömək edəcəkdir.

  3. Quraşdırıcının geri qalan addımlarını izləyin və Pythonu müəyyən bir qovluğa (məsələn, C:\Python) quraşdırın. Bütün standart konfiqurasiyaları seçin və quraşdırma prosesini bitirin.

  4. Sistem yolu dəyişənin təyini üçün aşağıdakı addımları izləyin:

    a. Başlat düyməsini vurun və "Sistem"i axtarın. "Sistem məlumatı" qalereyasını açın və "Sistem məlumatı" pəncərəsini açın. b. Sol tərəfdən "Gelişmiş sistem parametrləri"ni seçin. İndiyədək idarəetmə təqvimi ilə əlaqəli məlumatları düzəltmə icazəsi verə bilərsiniz. c. "Mülkiyyət" adlı pəncərədə, "Ortam dəyişənləri" düyməsini seçin. d. İstifadəçi dəyişənləri bölməsində "Yeni" düyməsini seçin və aşağıdakı dəyişəni daxil edin:

    • Ad: PATH
    • Dəyər: Pythonun quraşdırıldığı qovluğun tam yolu (məsələn, C:\Python)

    e. İstifadəçi dəyişənləri bölməsindən "OK" düyməsinə basın və bütün pəncərələri bağlayın.

  5. Artıq Pythonun quraşdırılması və sistem yolu dəyişdirilib və Python Windows üzərində düzgün işləyir. Bu zaman Pythonu istədiyiniz konsol və ya terminallarda çağıraraq işlədə bilərsiniz.

Pythonu çağırmaq üçün aşağıdakı addımları izləyin:

  1. Başlat düyməsini vurun və Command Prompt-u axtarın.

  2. Command Prompt-u açın və Python skriptlərini icra etmək istədiyiniz qovluğa keçin.

  3. Pythonu çağırmaq üçün aşağıdakı sintaksisi daxil edin:

    python

    Bu, standart Python interpreterini açacaq və siz Python kodunu daxil edə biləcəksiniz.

  4. Python interpreterini bağlamaq üçün exit() funksiyasını daxil edin və "Enter" düyməsini basın.

Artıq Pythonun quraşdırılması və sistem yolu dəyişdirilməsi tamamlandı. Pythonu istədiyiniz konsolda çağıraraq kodları icra edə, skriptləri işlədə və Python ilə çalışa bilərsiniz.

Python'da array-lər və list-lər arasındakı fərq nədir?

Python'da array-lər və list-lər arasındakı fərq əsasən onların yaddaş istifadəsi və elementlərinin tipi ilə bağlıdır. List-lər çox elastikdir və müxtəlif tipdə elementləri saxlaya bilərlər. Array-lər isə yalnız eyni tipdə elementləri saxlaya bilirlər və daha az yaddaş istifadə edirlər. List-ləri yaratmaq üçün sadəcə elementləri kvadrat mötərizələr içində yazmaq kifayətdir. Array-ləri yaratmaq üçün isə array modulundan (array.array ()) və ya NumPy paketindən (numpy.array ()) xüsusi funksiyalardan istifadə etmək lazımdır. List-lər daha çox istifadə olunur, çünki Python'da daxili olaraq mövcuddurlar. Array-lər isə böyük miqdarda eyni tipdə məlumat saxlamaq üçün daha effektivdir.

Python case sensitive-dir?

Bəli, Python case sensitive-dir. Bu o deməkdir ki, kiçik və böyük hərfləri fərqli kimi qəbul edir. Məsələn, username və UserName eyni dəyişkən deyil və onları bir-birinin əvəzinə istifadə etmək səhv olar. Eyni qayda funksiya adları üçün də keçərlidir. Python'da case sensitive olmaq identifikatorların sayını artırır. Python'da case sensitive olan başqa bir nümunə isə açar sözlərdir. Açar sözlər Python'da xüsusi mənaya malik olan sözlərdir və onların istifadəsi məhdudlaşdırılıb. Açar sözləri dəyişkən və ya funksiya adı kimi istifadə etmək olmaz. Açar sözlərin hamısı kiçik hərflərlə yazılır (məs., if, for, while, and, or v.s.).

[::-1] nə iş görür?

Python'da [::-1] bir sıra (sequence) üzərində tərsinmə əməliyyatıdır. Bu sıra bir simvol sırası (string), bir siyahı (list) və ya başqa bir sıra tipi ola bilər. Bu yazılışın mənası "sondan başlayaraq, əvvələ doğru, hər addımda bir element geri say"dır. Bu yazılışın üç hissəsi var: start, stop və step. Məsələn:

'salam'[::-1]
# output: 'malas'
[1, 2, 3, 4][::-1]
# output: [4, 3, 2, 1]

Python paketləri (packages) nələrdir?

Python paketləri (packages) Python modullarının (modules) bir araya gətirilmiş və təşkilatlandırılmış qruplarıdır. Python modulu isə Python kodunu saxlayan bir fayldır. Python paketləri ilə müxtəlif funksiyaları və xüsusiyyətləri əlavə etmək və istifadə etmək mümkündür. Python paketlərini PyPI (Python Package Index) saytından yükləyib quraşdıra bilərsiniz. PyPI Python cəmiyyəti tərəfindən yaradılmış və paylaşılmış proqramlar üçün bir anbardır. PyPI-də 461,500-dan çox paket mövcuddur.

Python-da dekoratorlar (decorators) nələrdir?

Python-da dekoratorlar (decorators) funksiyaların davranışını və ya nəticəsini dəyişdirmək üçün istifadə olunan funksiyalardır. Bir funksiyanın ətrafında başqa bir funksiyanın əlavə funksional və ya davranış tənzimləməsi təmin etmək üçün istifadə edilə bilərlər. Dekoratorlar funksiyaları düzəltməyə ehtiyac qalmadan funksiya funksionalını dəyişdirir və ya genişləndirir.

Dekoratorlar aşağıdakı qaydada işləyir:

  1. Dekorator funksiyası təyin edilir. Bu, əsas funksiyanın davranışını dəyişdirmək üçün istifadə ediləcək olan funksiya olur.
  2. Əsas funksiya dekoratorun parametri kimi təyin edilir. Bu, əsas funksiyaya əlavə funksionallıq əlavə etmək üçün dekoratorun əsas funksiyaya müdaxilə edə bilmək imkanı verir.
  3. Əsas funksiyaya dekorator tətbiq olunur. Bu, əsas funksiyanın davranışını dəyişdirmək üçün dekoratorun çağırılması deməkdir. Bu addımı həyata keçirmək üçün əsas funksiyanın üstündə "@dekorator_adı" sintaksisi istifadə olunur.

Dekoratorların istifadəsi funksiyaların davranışını dəyişdirmək, funksiya zamanını loglamaq, xətalara cavab vermək və s. kimi bir çox məqsədlərdə istifadə edilir. Python-da built-in dekoratorlar mövcuddur, həmçinin istədiyinizə uyğun öz dekoratorlarınızı da yarada bilərsiniz.

İstifadənin bir nümunəsini aşağıdakı koda baxaraq daha yaxşı anlaya bilərsiniz:

def dekorator(funksiya):
    def wrapper():
        print("Əvvəl funksiya işləyir.")
        funksiya()
        print("Sonra funksiya işləyir.")
    return wrapper

@dekorator
def salam():
    print("Salam, Dünya!")

salam()

# output: Əvvəl funksiya işləyir.
# output: Salam, Dünya!
# output: Sonra funksiya işləyir.

Python-da sıralama məcburidir (indentation required)?

Bəli, Python-da sıralama məcburidir. Python-da sıralama kod bloklarını təyin etmək üçün istifadə olunur. Python-da kod blokları ifadələrin (statements) bir qrupudur ki, onlar birlikdə icra olunur. Məsələn, if, for, while və ya funksiya təyin etmək üçün kod blokları lazımdır. Python-da kod bloklarını təyin etmək üçün müxtəlif sıra sayıları (indentation levels) istifadə olunur. Sıra sayıları boşluq və ya tab simvollarından ibarət ola bilər. Sıra sayılarının sayı və növü kod bloklarının başlanğıcında və sonunda eyni olmalıdır. Əks halda Python SyntaxError verir. Məsələn:

def func():
    print("Hello")
    print("World")

Bu funksiya düzgün yazılıb və iki sıra boşluq ilə sıralanıb. Lakin bu funksiya:

def func():
    print("Hello")
        print("World")

Sintaksis səhvi verir, çünki ikinci print ifadəsi ilkin sıra sayısından fərqlidir.

"break", "continue" və "pass" ifadələri necə işləyir?

break, continuepass ifadələri Python-da dövr (loop) ilə işləyərkən istifadə olunan nəzarət ifadələridir. Onlar dövrün icrasını normal ardıcıllıqdan dəyişdirirlər. Bu ifadələrin mənası və istifadəsi aşağıdakı kimi izah olunur:

  • break ifadəsi dövrü tamamilə dayandırır və dövrün xaricindəki kodun icrasına keçir. Bu ifadə əsasən xarici bir şərtin təsiri ilə dövrü bitirmək üçün istifadə olunur. Məsələn:
for i in range(10):
    print(i)
    if i == 5:
        break # 5-dən sonra dövrü dayandır

Bu kod 0-dan 9-a qədər olan rəqəmləri çap edir, lakin i = 5 olduqda break ifadəsi ilə dövrü dayandırır.

  • continue ifadəsi cari iterasiyanı dayandırır və dövrün növbəti iterasiyasına keçir. Bu ifadə əsasən dövrün bütün kodunu icra etmədən bir hissəsini ötürmək üçün istifadə olunur. Məsələn:
for i in range(10):
    if i % 2 == 0:
        continue # cüt rəqəmlilri ötür
    print(i)

Bu kod 0-dan 9-a qədər olan rəqəmlərin yalnız tək olanlarını çap edir, cüt olanlar üçün continue ifadsi ilə cari iterasiya ötürülür.

  • pass ifadəsi heç bir şey etmir və kodun icrasını davam etdirir. Bu ifadsi əsasən boş blokları yaratmaq üçün istifad olunur. Mǝsǝlǝn:
for i in range(10):
    pass # boş dövr

Bu kod heç bir şey çap etmir, çünki dövrün içində pass ifadəsindən başqa heç bir şey yoxdur. pass ifadəsi funksiyaları, sinifləri və ya şərt bloklarını da boş saxlamaq üçün istifadə oluna bilər.

Python-da bir siyahının elementlərini yerində təsadüfi şəkildə necə qarışdıra bilərəm?

Python-da bir siyahının elementlərini yerində təsadüfi şəkildə qarışdırmaq üçün random modulundan istifadə edə bilərsiniz. Bu modulun shuffle() funksiyası siyahının elementlərini yerində təsadüfi şəkildə qarışdırır. Məsələn:

import random

numbers = [1, 2, 3, 4, 5]

random.shuffle(numbers)

print(numbers)

# output: [3, 1, 5, 4, 2]

Python-da çox sətirli şəkildə necə şərh yazmaq olar?

Python-da çox sətirli şəkildə şərh yazmaq üçün """ və ya ''' işarələrindən istifadə edə bilərsiniz. Məsələn:

""" Bu bir çox sətirli şərhdir. """

Python dili nə cür bir dil sayılır - proqramlaşdırma dili və ya skript dilidir?

Python dili həm proqramlaşdırma dili, həm də skript dilidir. Python dili proqramlaşdırma dili olaraq adlandırılır, çünki onunla proqramlar yazmaq mümkündür. Python dili həm də skript dilidir, çünki onunla skriptlər də yazmaq mümkündür.

Mənfi indekslər nədir və nə üçün istifadə olunurlar?

Mənfi indekslər Python-da bir sıra, siyahı və ya digər verilənlər strukturlarında elementləri geriye doğru saymaq üçün istifadə olunan indekslərdir. Normal indekslər 0-dan başlayır və artıq istifadə olunur, amma mənfi indekslər -1-dən başlayır və geriye doğru azalır.

Mənfi indekslərin istifadəsi bir neçə məqsədə xidmət edir:

  1. Son elementə çatmaq: Mənfi indekslər, bir sıra və ya siyahının son elementinə asanlıqla çatmağa imkan verir. Məsələn, -1 indeksi sonuncu elementi göstərir, -2 indeksi sonuncudan bir öncəki elementi göstərir və s. kimi.
  2. Geriye doğru dövriyyələr: Mənfi indekslər dövriyyələr zamanı geriye doğru elementləri gətirmək üçün istifadə olunur. Bir sıra və ya siyahıdakı elementləri geriye doğru sıra ilə işləmək üçün mənfi indekslər istifadə edilə bilər.
  3. Arxa hissələrə müraciət: Mənfi indekslər bir sıranın və ya siyahının arxa hissələrindəki elementlərə müraciət etməyə imkan verir. Məsələn, -1 indeksi son elementi, -2 indeksi sonuncudan bir öncəki elementi göstərir.

Ən əsas faydası, mənfi indekslərin verilənlər strukturlarının son elementlərinə asanlıqla çatmağa imkan verərək, tərs istiqamətdə indekslənməni idarə edə bilməsi və dövriyyələr üçün rahatlıq yaratmasıdır.

Bir sətirdəki bütün simvolların alfanumeric olduğunu necə yoxlamaq olar?

Python-dakı isalnum() metodu, bir sətirdəki bütün simvolların alfanumeric olduğunu yoxlamağa imkan verir. Bu metod, bir sətirin alfanumeric olub-olmadığını yoxlamaq üçün istifadə olunur. Məsələn:

s = "HelloWorld123"
print(s.isalnum())

# output: True

Bir başqa üsul isə regex modulundan istifadə etməkdir. Məsələn:

import re

bool(re.match(‘[A-Za-z0-9]+$','abcd123’))

# output: True

List-lərdə Del və Remove() arasındakı fərq nədir?

Python'da, listlərdə del operatoru və remove() funksiyası arasında fərqlər var.

del operatoru, listdəki bir elementi indeksinə əsasən silmək üçün istifadə olunur. Bu operator, bir elementin indeksini verərək listdən o elementi silir. Daha sonra, listdəki digər elementlərin indeksləri yenidən qurulur. del operatorunun sintaksisi aşağıdakı kimi görünür:

del liste[indeks]

remove() funksiyası isə listdəki bir elementi dəyərə görə silmək üçün istifadə olunur. Bu funksiya, silmək istədiyiniz elementin dəyərini verərək onu listdən tapır və silir. remove() funksiyasının sintaksisi aşağıdakı kimi görünür:

liste.remove(dəyər)

Fərqlər:

  • del operatoru bir elementi silmək üçün indeksi tələb edir, remove() funksiyası isə bir elementi silmək üçün dəyəri tələb edir.
  • del verilmiş aralıqda olan bütün elementləri silmək üçün istifadə oluna bilər, remove() isə yalnız bir elementi silmək üçün istifadə oluna bilər.
  • remove() funksiyası, silmək istədiyiniz elementi tapa bilməzsə, ValueError verir, del operatoru isə indeksi verilən elementi tapa bilmazsa IndexError verir.
  • remove() verilmiş dəyərə uyğun ilk tapdığı elementi silir.

Nümunə olaraq, aşağıdakı kod hissəsində del operatoru və remove() funksiyası necə istifadə olunur:

liste = [1, 2, 3, 4, 5]

del liste[2]  # Indeksə əsasən silmək

print(liste)  # [1, 2, 4, 5]

liste.remove(4)  # Dəyərə əsasən silmək

print(liste)  # [1, 2, 5]

Python-da split() və splitlines() arasındakı fərq nədir?

Python'da, split()splitlines() string obyektləri üzərində fərqli nəticələr verən iki ayrı funksiya/dəyişən var.

split() funksiyası, bir stringi boşluq (və ya digər ayırıcı simvollar) əsasında bölmək üçün istifadə olunur. Bu funksiya, verilən bir stringi ayırıcı simvollərə görə ayrışdıraraq bir listə çevirir. Ayırıcı simvollar təyin edilməzə qədər stringi boşluqlarla bölməyə çalışır. split() funksiyasının standart ayırıcı simvolu boşluqdur.

Nümunə olaraq:

string = "Python proqramlaşdırma dili"
result = string.split()
print(result)

Bu kod hissəsində, split() funksiyası boşluqları ayırıcı simvol kimi istifadə edərək stringi bölməyə çalışır və stringin sözlərini tərkib edən bir listə çevirir. Nəticə kimi, aşağıdakı listi alacaqsınız:

['Python', 'proqramlaşdırma', 'dili']

splitlines() funksiyası isə bir stringi sətirlərə görə bölmək üçün istifadə olunur. Bu funksiya, bir stringi sətirlərə ayıraraq bir listə çevirir. splitlines() funksiyası, yeni sətirlər (\n, \r, \r\n) əsasında stringi bölməyə çalışır.

Nümunə olaraq:

string = "Sətir 1\nSətir 2\r\nSətir 3\rSətir 4"
result = string.splitlines()
print(result)

Bu kod hissəsində, splitlines() funksiyası stringi yeni sətirlərə əsasən bölməyə çalışır və stringin hər bir sətrini ehtiva edən bir listə çevirir. Nəticə kimi, aşağıdakı listi alacaqsınız:

['Sətir 1', 'Sətir 2', 'Sətir 3', 'Sətir 4']

Birinci nümunədə split() funksiyası boşluqları ayırıcı simvol kimi istifadə edərək stringi bölməyə çalışır və ikinci nümunədə splitlines() funksiyası yeni sətirləri ayırıcı simvol kimi istifadə edir. Bu səbəbdən, split()splitlines() funksiyaları fərqli nəticələr verir.

Python-dakı "re" modulunun split(), sub() və subn() metodlarını açıqlayın.

"re" modulu, Python-dakı regular ifadələr (regex) ilə işləmək üçün istifadə olunan bir moduldur. Bu modul, mətnlərin axtarışını, əvəzləməsini və başqa əməliyyatları icra etmək üçün funksiyalar və metodlar təklif edir. İstifadəçilərə geniş imkanlar verir və mətn işləmə prosesini daha effektiv edir.

"re" modulunun ən yaygın istifadə olunan üç metodu split(), sub()subn()-dir:

  1. split(pattern, string, maxsplit=0) metod: Bu metod, verilən mətni (string) müəyyən bir qayda (pattern) əsasında bölmək üçün istifadə olunur. Məsələn, mətni boşluqlara görə bölərək bir siyahı yaradır. pattern parametri, regex tərəfindən tanınan qaydadır. string parametri bölmək istədiyimiz mətndir. maxsplit parametri isə opsiyonaldır və ən çox sayda bölməni sayğac edir.
  2. sub(pattern, repl, string, count=0) metod: Bu metod, verilən mətndə müəyyən bir qaydanı (pattern) axtarır və onu başqa bir mətnlə (repl) əvəzləyir. pattern parametri, regex tərəfindən tanınan qaydadır. repl parametri, əvəzlənəcək mətndir. string parametri, əvəzləmənin aparılacağı mətndir. count parametri isə opsiyonaldır və maksimum əvəzləmə sayını təyin edir.
  3. subn(pattern, repl, string, count=0) metod: Bu metod, sub() metoduna oxşar işləyir, lakin əvəzləmələrin sayını və əvəzlənmiş mətnlərin bir siyahısını qaytarır. Qaytarılan tuple-in birinci elementi əvəzləmələrin nəticəsində əldə edilən yeni mətndir, ikinci elementi isə əvəzləmə sayını təmsil edir.

Bu metodlar, "re" modulunun güclü funksiyaları olaraq mətnlərin manipulyasiyası üçün çox istifadə edilir. regex qaydalarını təyin edərək mətndəki məlumatları axtarmaq, bölüşdürmək və ya əvəzləmək üçün bu metodları istifadə edə bilərsiniz.

Python literalı nə deməkdir?

Python dilində, literal bir veri tipinin doğrudan mənimsənilən qiymətidir. Başqa bir deyişlə, bir literal, bir verilənin özünün özəlliklərini və qiymətini əks etdirən sintaktik olaraq dəyəri ifadə edir.

Python-da fərqli növ literal tipləri mövcuddur:

  1. String literalı: Mətni təmsil edir və tıravərək (') və ya ikiqat (") işarələrlə yazılır. Məsələn, 'Hello' və ya "Python" bir string literalıdır.
  2. Numeric literalı: Sayıları təmsil edir. Məsələn, 42, 3.14, 5+3j rəqəmlərini təmsil edən numeric literal tipləridir.
  3. Boolean literalı: İstər doğru (True) istərsə də yanlış (False) qiymətləri təmsil edən literal tipləridir.
  4. List literalı: Siyahıları təmsil edir və siyahını köşəli mötərizələr ([]) içərisində elementləri ayıraraq təyin edir. Məsələn, [1, 2, 3] bir list literalıdır.
  5. Tuple literalı: Tuple'ları təmsil edir və elementləri mötərizələr (()) içərisində ayıraraq təyin edir. Məsələn, (1, 2, 3) bir tuple literalıdır.
  6. Dictionary literalı: Sözləri (dictionary) təmsil edir və elementləri süslü mötərizələr ({}) içərisində anahtar: dəyər formatında təyin edir. Məsələn, {'ad': 'John', 'yaş': 25} bir dictionary literalıdır.
  7. Set literalı: Setləri təmsil edir və elementləri süslü mötərizələr ({}) içərisində ayıraraq təyin edir. Məsələn, {1, 2, 3} bir set literalıdır.

Bu literal tipləri, Python dilində verilənlərə mənimsənmək üçün istifadə olunan təyinatlar və sintaksis qaydalarını ifadə edir.

Python-da map funksiyası nədir?

Python'da map() funksiyası, bir dəyişəni tətbiq edərək bir iterasiya verilənin üzərində keçmək üçün istifadə olunan bir built-in funksiyadır. map() funksiyası, birinci argument kimi bir funksiya və ya lambda ifadəsi və ikinci argument kimi bir iterable verilən qəbul edir. Funksiya, verilənin hər elementinə tətbiq edilir və nəticə olaraq yeni bir iterator obyekti qaytarılır.

map() funksiyasının sintaksisi aşağıdakı kimi görünür:

map(function, iterable)

Burada function, tətbiq ediləcək funksiya və ya lambda ifadəsidir. iterable isə dəyişən, siyahı, tuple və ya digər iterasiya verilənidir.

map() funksiyasının əsas məqsədi, bir iterasiya veriləni üzərində tətbiq edilən əməliyyatı hamı üçün tətbiq etməkdir. Nəticə olaraq, tətbiq edilən funksiyanın çıxarımları yeni bir iterator obyekti kimi qaytarılır. Bu iterator obyekti daha sonra list, tuple və ya başqa bir iterable verilən tiplərinə çevrilə bilər.

Aşağıdakı örnəkdə map() funksiyasının istifadəsi göstərilmişdir:

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)

print(list(squared_numbers))  # Output: [1, 4, 9, 16, 25]

Bu misalda numbers siyahısı üzərində square() funksiyası tətbiq olunur və hər bir elementin kvadratı yeni bir iterator obyektinə yazılır. list() funksiyası ilə iterator obyekti siyahıya çevrilir və nəticə konsolda çap olunur. Əksər hallarda, map() funksiyası, loop ilə hər bir elementin üzərində getmək yerinə daha sərfəli bir variant kimi istifadə olunur.

Python-dakı generatorlar (generators) nələrdir?

Python-da generatorlar təkrarlana bilən obyektlər yaratmaq üçün istifadə edilə bilən xüsusi funksiyalardır. Dəyəri qaytaran və sonra fəaliyyətini dayandıran adi funksiyalardan fərqli olaraq, generatorlar icranı müvəqqəti olaraq dayandırmaq və hər dəfə bir dəyər vermək üçün yield açar sözündən istifadə edirlər. Bu, generatorların yaddaşını səmərəli edir, çünki onlar bütün dəyərlər ardıcıllığını əvvəlcədən yaratmır, əksinə, tələb olunan dəyərlər yaradır.

Generatorlar böyük verilənlər dəstləri ilə işləyərkən və ya dəyərlərin tam ardıcıllığına bir anda ehtiyac olmadıqda faydalıdır. Onlar bizə həddindən artıq yaddaş sərf etmədən potensial sonsuz ardıcıllıqla təkrarlamağa imkan verir.

Python-dakı iterasiya nədir?

Python'da iterasiya, bir objektin elementlərinin ardıcıllıq üzrə dəyərləri ilə getmək deməkdir. Iterasiya, iterasiya verilənlərinin (iterables) üzərində dövr etmək üçün istifadə olunan bir prosesdir. Iterasiya verilənləri, daxili dəyərlərə sahib olan və bir iterasiya obyektinə çevrilə bilən verilənlərdir.

Python'da bir çox dəyər tipi, iterasiya veriləni kimi istifadə edilə bilir. Bunlar arasında siyahılar (lists), demək olar ki, hər hansı bir tipdəki daxili dəyərlərə malik olan tuple-lar, hər hansı bir tipdəki elementləri saxlaya bilən set-lər, dictionari-lər və string-lər daxildir.

Iterasiya verilənləri ilə işləmək üçün for dövr operatorundan və ya iter() funksiyasından istifadə edilir. for dövr operatoru, bir iterasiya verilənindəki hər bir elementin üzərində keçmək üçün istifadə olunur:

my_list = [1, 2, 3, 4, 5]
for element in my_list:
    print(element)

Bu kod nümunəsində my_list siyahısı üzərində dövrə girilir və hər bir element element adlı dəyişənə mənimsədilir. Sonra hər bir element konsola çap olunur.

iter() funksiyası isə bir iterasiya veriləni obyektini yaratmaq üçün istifadə olunur. Bu funksiya, verilən obyektini tək bir elementin ardıcıllıq üzrə dəyərlərini təmsil edən bir iterator obyektinə çevirir. Bu iterator obyekti daha sonra next() funksiyası ilə istifadə edilərək elementlərə ardıcıllıq üzrə daxil olunur:

my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)

print(next(my_iter))  # Output: 1
print(next(my_iter))  # Output: 2
print(next(my_iter))  # Output: 3

Bu misalda iter() funksiyası ilə my_list siyahısının bir iterator obyektinə çevrildiyi görünür. Daha sonra next() funksiyası ilə iterator obyektinə ardıcıllıq üzrə daxil olunur və hər bir next() çağırışı ilə bir sonrakı element alınır.

Iterasiya, bir verilən üzərində elementlər üzrə dövr etmək, məlumatları lazımi zamanda lazımi məqsədlər üçün istifadə etmək və həmçinin Python-da bir çox proqramlama paradigması üçün əsas bir vaciblik kəsb edir.

Python-dakı "yield" ifadəsi nədir?

yield ifadəsi, funksiya daxilində dəyər yaradan bir nöqtəyə qədər işləyir və məlumatı geri qaytarır. Dövrü dayandırmaq və ya funksiyanın bitməsini tələb etmək üçün return ifadəsindən fərqli olaraq yield ifadəsi istifadə olunur.

Hər yield ifadəsindən sonra, funksiyanın daxilindəki vəziyyət xatırlanır və növbəti dəfə yield ifadəsinə qədər davam edilir. Bu, funksiyanın məlumatı ardıcıllıq üzrə progressiv olaraq tələb etmək və işləmək üçün iterator funksiyası kimi davranmasına imkan verir.

İstifadə nümunəsi aşağıdakı kimi görünə bilər:

def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
print(next(gen))  # Output: 1
print(next(gen))  # Output: 2
print(next(gen))  # Output: 3

Bu nümunədə, my_generator adlı bir generator funksiyası yaradılır. İlk yield ifadəsi ilə funksiya 1 dəyərini qaytarır və dayanır. Sonra növbəti "next()" çağırışında funksiya, sonrakı yield ifadəsinə kimi davam edir və dəyərləri ardıcıllıq üzrə qaytarır.

yield ifadəsi, generatorlar vasitəsilə böyük verilənlərlə çalışmağa imkan verir və yaddaşda saxlama məsələlərini minimallaşdırır. Generatorlar, döngülər, iterasiya verilənləri və lazımi məlumatı progressiv olaraq tələb etmək üçün çox faydalı bir alətdir.

Python dilində dəyişənləri müvafiq veri tipləri ilə təyin etmək məcburiyyəti varmı?

Python dilində dəyişənləri müvafiq veri tipləri ilə təyin etmək məcburiyyəti yoxdur. Python dilində dəyişənlərə dəyər təyin etmək üçün sadəcə dəyişənin adını və dəyəri təyin etmək kifayətdir. Python dəyişənlərinin veri tipləri dinamik olaraq təyin edilir, yəni dəyişənin dəyəri təyin edildikdən sonra veri tipi avtomatik olaraq müəyyən edilir.

Dict və List comprehensions nə deməkdir?

List və dict comprehensions, Python dilində bir list və ya dict yaratmaq üçün istifadə olunan sintaksis qaydalarıdır. List və dict comprehensions, bir list və ya dict yaratmaq üçün daha sərfəli və qısa bir variant kimi istifadə olunur. List comprehension, bir siyahı yaratmaq üçün ifadələri ifadə edir. Bu metod, bir iterasiya üzərində dövr etmək, şərt ifadələrini yoxlamaq və yeni bir siyahı yaratmaq üçün kompakt bir sintaksis təklif edir. Nümunə olaraq, 1-dən 10-a qədər ədəd siyahısının kvadratlarını əldə etmək üçün bir list comprehension istifadə edə bilərik:

squares = [x**2 for x in range(1, 11)]

Dict comprehension isə sözlər (dictionary) yaratmaq üçün ifadələri ifadə edir. Bu metod, iterasiya üzərində dövr etmək, şərt ifadələrini yoxlamaq və yeni bir sözlər yaratmaq üçün kompakt bir sintaksis təklif edir. Nümunə olaraq, bir sözlək yaratmaq üçün bir dict comprehension istifadə edə bilərik:

names = ['Alice', 'Bob', 'Charlie']         
name_lengths = {name: len(name) for name in names}
print(name_lengths)  # Output: {'Alice': 5, 'Bob': 3, 'Charlie': 7}

List comprehension və dict comprehension, kodun səmərəli, oxunaqlı və qısa formada yazılmasına imkan verir və iterasiya və şərt ifadələrinin birgə istifadəsi ilə daha effektiv və təmiz kod yazmağa kömək edir.

Python-da çoxlu miras dəstəklənir?

Python dilində çoxlu miras dəstəklənir. Çoxlu miras, bir sinifin birdən çox üst sinifdən miras alması deməkdir. Python dilində bir sinif birdən çox üst sinifdən miras ala bilər. Bu, bir sinifin birdən çox üst sinifdən xüsusiyyətlərini və metodlarını əldə etməsinə imkan verir. Çoxlu miras, siniflərin bir-birinə bağlılığını və bir-birinə bağlılığın təhlükəsizliyini artırır.

Range və xrange arasında fərq nədir?

  • Python3 xrange funksiyası yoxdur, sadəcə range funksiyası mövcuddur.
  • Python2 xrange funksiyası bir siyahı yaratmır, sadəcə bir iterator obyekti yaradır. Bu, yaddaşda çox az yer tutur və daha effektivdir. range funksiyası isə bir siyahı yaradır.
  • range daha çox yaddaş sərf edir, çünki bir siyahı yaradır. xrange isə daha az yaddaş sərf edir, çünki yalnız bir iterator obyekti yaradır.

"Pickling və unpickling" nə deməkdir?

Pickling, python obyekt iyerarxiyasının bayt axınına çevrilməsinə deyilir. Bayt axınının Python obyekt iyerarxiyasına çevrilməsinə unpickling deyilir. Pickling və unpickling, Python obyektlərini fayllarda saxlamaq üçün istifadə olunan bir prosesdir. Nümunə olaraq, aşağıdakı kodda bir obyektin seriləşdirilməsi (pickling) göstərilir:

import pickle

data = {'name': 'John', 'age': 30, 'city': 'New York'}

# Pickling the object
serialized_data = pickle.dumps(data)

Aşağıdakı nümunədə seriləşdirilmiş obyektin (pickled object) yenidən orijinal obyektə (unpickled object) çevrilməsi göstərilir:

import pickle

# Unpickling the object
deserialized_data = pickle.loads(serialized_data)

# Accessing the original object
print(deserialized_data['name'])  # Output: John
print(deserialized_data['age'])  # Output: 30
print(deserialized_data['city'])  # Output: New York

Tkiner nədir?

Tkinter, Python dilində standart bir GUI (Graphical User Interface) paketidir. Tkinter GUI proqramları yaratmaq üçün istifadə edilən daxili Python moduludur və GUI inkişafı üçün Python-un standart alət dəstidir. Tkinter Python ilə əvvəlcədən yüklənmişdir, buna görə ayrıca quraşdırma tələb olunmur. Onu skriptinizə idxal etməklə istifadə etməyə başlaya bilərsiniz.

Python tam obyekt yönümlüdürmü?

Python tam obyekt yönümlü bir proqramlaşdırma dilidir. Bu deməkdir ki, Python-da hər şey obyektdir və hər obyektin öz xüsusiyyətləri (atributlar) və davranışları (metodlar) var. Python-da obyekt yaratmaq üçün class açar sözündən istifadə edirik. class, obyektin şablonu və ya qaydasıdır. Məsələn:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

Bu class bir şəxs obyektini təsvir edir. __init__() metodu obyektin yaradılması zamanı çağırılan xüsusi bir metoddur. self parametri isə obyektin özünü göstərir. greet() metodu isə obyektin bir davranışını təmsil edir. Bu class-dan istifadə edərək müxtəlif şəxs obyektləri yarada bilərik:

p1 = Person("Ali", 25)
p2 = Person("Zara", 23)

p1.greet() # Hello, my name is Ali and I am 25 years old.
p2.greet() # Hello, my name is Zara and I am 23 years old.

Python-da bütün file prosesləri üçün istifadə olunan modullar nələrdir?

Python'da file prosesləri üçün əsasən aşağıdakı modullardan istifadə edilir:

  1. os modulu: Faylların və qovluqların əməliyyatlarını yerinə yetirmək üçün istifadə olunur. Məsələn, faylın var olub olmadığını yoxlamaq, faylın adını və ya yolunu dəyişdirmək, faylın həcmi və yaranma tarixi kimi məlumatlara əldə etmək üçün istifadə edilir.
  2. shutil modulu: Fayl və qovluq əməliyyatlarını təkmilləşdirmək üçün istifadə olunur. Məsələn, faylları kopyalamaq, silmək, yenidən adlandırmaq və s.
  3. os.path modulu: Fayl və qovluq yolları ilə əməliyyatlar üçün istifadə olunur. Məsələn, faylın mövcud olub olmadığını yoxlamaq, faylın adını və ya yolunu dəyişdirmək üçün istifadə edilir.
  4. glob modulu: Qovluq içindəki faylları və qovluqları axtarmaq üçün istifadə olunur. Axtarışı maska ilə təyin edə bilir və uyğun faylların siyahısını verir.

Bu modullar, fayl yaratmaq, açmaq, oxumaq, yazmaq, silmək, dəyişdirmək və digər fayl əməliyyatlarını yerinə yetirmək üçün müxtəlif funksiyalar və xüsusiyyətlər təmin edir. Hər bir modulun fərqli məqsədləri və funksionalitətləri olduğu üzrə uyğunluğa görə seçilməlidir.

Python-dəki fayl ilə bağlı modulların funksiyaları nədir?

Python'da fayllarla bağlı işləmək üçün çeşitli modullar və funksiyalar mövcuddur. İşte ən yaygın olanları:

  1. open() funksiyası: Faylı açmaq üçün istifadə olunur. open() funksiyası bir fayl obyektini qaytarır və bu obyekt vasitəsilə fayl üzərində oxumaq, yazmaq və başqa əməliyyatlar aparmaq mümkün olur.
  2. read() funksiyası: Fayldan məlumat oxumaq üçün istifadə olunur. read() funksiyası ilə faylın tamamını və ya bəlli bir həcmi oxuya bilərsiniz.
  3. write() funksiyası: Fayla məlumat yazmaq üçün istifadə olunur. write() funksiyası ilə məlumatları fayla yazmaq mümkündür.
  4. close() funksiyası: Faylı bağlamaq və yaddaşdan silmək üçün istifadə olunur. Fayl ilə iş bitdikdən sonra close() funksiyası çağırılmalıdır.
  5. seek() funksiyası: Faylın oxunacaq/yazılacaq yeri ilə çalışma mövqeyini dəyişmək üçün istifadə olunur. seek() funksiyası ilə faylın istənilən mövqeyə getmək mümkündür.
  6. tell() funksiyası: Faylın hazırda oxunan/yazılan mövqeyini öyrənmək üçün istifadə olunur. tell() funksiyası, faylın mövcud mövqeyini qaytarır.

Bu yalnız bir neçə əsas fayl əməliyyatını əhatə edən funksiyaların sadəcə bir hissəsidir. Python-da fayllarla əlaqədar daha çox modul və funksiya mövcuddur və hər biri farklı funksionallıqlar təmin edir. Fayl ilə bağlı əməliyyatlarınız üçün təyin etdiyiniz məqsədə və tələblərinizə əsaslanaraq uyğun modul və funksiyaları seçməlisiniz.

with ifadəsinin istifadəsi və sintaksisi necədir?

with ifadəsi, Python-dakı fayllarla bağlı əməliyyatlar üçün istifadə olunan bir Python ifadəsidir. with ifadəsi, fayl ilə işləmək üçün open() funksiyasından istifadə etmək üçün daha sərfəli bir variant kimi istifadə olunur. with ifadəsi, faylın açılması, oxunması, yazılması və bağlanması kimi əməliyyatları avtomatik olaraq yerinə yetirir. Bu, fayl ilə işləmək üçün daha təhlükəsiz bir variantdır, çünki faylın bağlanması unudulmaz. with ifadəsinin sintaksisi aşağıdakı kimidir:

with expression [as target]:
    # İşlənmək istədiyimiz əməliyyatlar

with ifadəsi, with bloku daxilindəki əməliyyatları yerinə yetirmək üçün resursu açar, sonra işləyir və nəticədə resursu avtomatik olaraq bağlayır. Bu, fayllar, verilənlər bazaları, ağ yığıcıqları və s. kimi resursları daha təhlükəsiz və səhvə qarşı daha bağlı şəkildə idarə etmək üçün istifadə olunur.

Faylın məzmununu tərsinə çevirmək üçün funksiya yazın.

def reverse_file(file_name):
    with open(file_name, 'r') as f:
        lines = f.readlines()
        lines.reverse()

    with open(file_name, 'w') as f:
        f.writelines(lines)

Python-da "self" nədir?

Python-da self bir konvensiyadır ki, onunla bir sinifin nümunəsini (obyektini) göstəririk. self -i sinifin metodlarının ilk parametri olaraq yazırıq ki, metodlar sinifin xüsusiyyətlərinə (atributlarına) və digər metodlarına müraciət edə bilsin. Məsələn:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

Bu sinifdə __init__()greet() metodlarının ilk parametri self-dir. Bu sayədə metodlar sinifin name və age xüsusiyyətlərinə müraciət edir. Sinifdən bir nümunə yaratdıqda self parametrini verməyimiz lazım deyil, çünki Python onu avtomatik olaraq özü doldurur. Məsələn:

p = Person("Ali", 25) # "self" vermirk
p.greet() # Hello, my name is Ali and I am 25 years old.

Yazmaq üçün c:\hello.txt faylını açmaq əmrini yazın?

with open("c:\\hello.txt", "w") as f:
    pass

len() nə edir?

len() Python dilində bir built-in funksiyadır və bir verilənin (məsələn, bir sıra, bir siyahı, bir sözlər kimi) uzunluğunu ölçmək üçün istifadə olunur.

len() funksiyası bir veri obyektini qəbul edir və onun elementlərinin sayını (uzunluğunu) qaytarır. Elementlərin sayıları genelliklə veri tipinə və obyektin strukturuna bağlı olaraq dəyişə bilir.

İstifadə nümunəsi:

my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length)  # Çıxış: 5

Bu nümunədə len() funksiyası my_list adlı siyahının uzunluğunu hesablayır və nəticə olaraq 5 dəyərini qaytarır. my_listin daxilindəki elementlərin sayısı 5-dir, buna görə də len(my_list) 5 olaraq qiymətləndirilir. length adlı dəyişənə mənimsədilən dəyər print() funksiyası vasitəsilə çapa verilir.

Pythonda *args və **kwargs nə deməkdir?

*args**kwargs Python dilində funksiyaların parametrlərini dəyişkən sayıda argümanlarla işləmək üçün istifadə olunan özel parametrlərdir.

*args parametri bir funksiya tərəfindən qəbul edilən dəyişən sayıda pozisiya parametrlərinin bir tuple kimi toplanmasına imkan verir. * operatoru ilə işarələnmiş bir parametr funksiyaya istənilən sayda pozisiya argümalarını ötürə bilər. args sözü əks olunmuş kimi seçilmişdir, amma əsasən konvensiya olaraq istifadə edilir. İstifadə nümunəsi:

def my_function(*args):
    for arg in args:
        print(arg)

my_function(1, 2, 3)

Bu nümunədə my_function adlı funksiya *args parametri ilə təyin edilmişdir. Bu funksiya daxilində, parametrlər tuple kimi toplanır və ardıcıl şəkildə çap olunur. my_function(1, 2, 3) şəklində funksiyanı çağıranda, args tuple-i (1, 2, 3) olacaq və dövr vasitəsilə hər bir element ayrı ayrı çap olunacaq.

**kwargs parametri isə funksiya tərəfindən qəbul edilən dəyişən sayıda adlandırılmış parametrlərin bir lüğət kimi toplanmasına imkan verir. ** operatoru ilə işarələnmiş bir parametr funksiyaya istənilən sayda adlandırılmış argümanları ötürə bilər. kwargs sözü əks olunmuş kimi seçilmişdir, amma əsasən konvensiya olaraq istifadə edilir.

İstifadə nümunəsi:

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_function(name="John", age=25, city="London")

Bu nümunədə my_function adlı funksiya **kwargs parametri ilə təyin edilmişdir. Bu funksiya daxilində, adlandırılmış parametrlər lüğət kimi toplanır və hər bir parametr üçün ad və dəyər ayrı ayrı çap olunur. my_function(name="John", age=25, city="London") şəklində funksiyanı çağıranda, kwargs lüğəti {"name": "John", "age": 25, "city": "London"} olacaq və dövr vasitəsilə hər bir ad və dəyər ayrı ayrı çap olunacaq.

Dublikat elementləri siyahıdan necə siləcəksiniz?

  • Set istifadə edərək
my_list = [1, 2, 3, 1, 2, 5, 6, 7, 8]
my_list = list(set(my_list))
print(my_list)  # Output: [1, 2, 3, 5, 6, 7, 8]
  • List comprehension istifadə edərək
my_list = [1, 2, 3, 1, 2, 5, 6, 7, 8]
my_list = [x for n, x in enumerate(my_list) if x not in my_list[:n]]
print(my_list)  # Output: [1, 2, 3, 5, 6, 7, 8]
  • Dövr istifadə edərək
my_list = [1, 2, 3, 1, 2, 5, 6, 7, 8]
new_list = []
for i in my_list:
    if i not in new_list:
        new_list.append(i)
print(new_list)  # Output: [1, 2, 3, 5, 6, 7, 8]

Python ilə faylı necə silə bilərəm?

import os
os.remove("file.txt")

Fayldakı təsadüfi sətri necə oxumaq olar?

import random
with open("file.txt", "r") as f:
    lines = f.readlines()
    random_line = random.choice(lines)
    print(random_line)

Mətn faylında sətirlərin ümumi sayını hesablamaq üçün Python proqramı yazın?

with open("file.txt", "r") as f:
    lines = f.readlines()
    print(len(lines))

“is”, “not” və “in” operatorlarının məqsədi nədir?

  • is operatoru, iki obyektin eyni obyekt olub-olmadığını yoxlamaq üçün istifadə olunur.
  • not operatoru, bir şərt ifadəsinin əksinə çevirmək üçün istifadə olunur.
  • in operatoru, bir obyektin digər bir obyektin daxilində olub-olmadığını yoxlamaq üçün istifadə olunur.

Python hər dəfə çıxdıqda niyə bütün yaddaş ayrılmır?

Python dilində, hər dəfə bir skripti başladıqda bütün yaddaşın ayrılmamasının əsas səbəbi effektiv yaddaş istifadəsidir. Python bir interpreter dilidir və kodu sətir-sətir oxuyaraq hər bir sətirdən keçəndə ayrı yaddaş bölmələri yaradır.

Python'un yaddaş idarəetməsi iki əsas prinsipə əsaslanır: referans sayma və çöp toplama (garbage collection).

Referans sayma, hər bir obyektin referans sayını (yəni ona istinad edən dəyişənlərin sayını) qeyd edərək yaddaşın idarə olunmasını təmin edir. Bir obyekti istifadə etdiyimizdə onun referans sayı artırılır, istifadədən sonra isə azalır. Bir obyektin referans sayı 0-a düşdükdə (yəni ona heç bir istinad qalmadıqda) çöp toplama prosesi onu avtomatik olaraq yaddaşdan silir.

Çöp toplama (garbage collection) isə artıq istifadə edilməyən obyektlərin yaddaşdan silinməsinə və yaddaşın təmizlənməsinə kömək edir. Çöp toplama prosesi zamanla işləyir və artıq referansı olmayan obyektləri təyin edir və onları yaddaşdan silir.

Pythonda ternary operatorlardan necə istifadə etmək olar?

Python dilində ternary operator (if-else operatoru) istifadə edərək qısa şəkildə şərt əsasında dəyişənləri təyin etmək mümkündür. Ternary operatorun sintaksisi aşağıdakı kimi görünür:

<expression1> if <condition> else <expression2>

Burada <condition> şərt ifadəsidir. Əgər bu şərt doğru (True) olarsa, <expression1> qiyməti təyin olunur, əks halda isə <expression2> qiyməti təyin olunur.

Nümunəyə baxaq:

x = 10
y = 20

max_value = x if x > y else y
print(max_value)  # Output: 20

Bu nümunədə xy dəyişənləri verilib. Ternary operator vasitəsilə, əgər x dəyişəni y dəyişənindən böyükdürsə, max_value dəyişəninə x qiyməti təyin olunur, əks halda isə y qiyməti təyin olunur.

Ternary operator, kodun daha qısa və oxunması daha asan olmasını təmin edir və müəyyən şərtə əsaslanan dəyişən təyinatlarında istifadə olunur.

Python array-nə dəyərləri necə əlavə etmək olar?

Python'da array modulu, performansı yüksək array (siyahı) veri tipini dəstəkləyir. Array modulu, bellek əlçatanlılığı və effektiv yaddaş idarəetməsi üçün optimallaşdırılmış dəyərlər ilə çalışmağa imkan verir.

Array veri tipinə dəyər əlavə etmək üçün aşağıdakı addımaları izləyə bilərsiniz:

  1. Array modulunu import edin:
import array
  1. Bir array yaratmaq üçün array.array() funksiyasını istifadə edin. Bu funksiya, dəyərlərin tipini və başlanğıc elementlərini tələb edir. Məsələn, ədədlər array-i yaratmaq üçün:
numbers = array.array('i', [1, 2, 3, 4, 5])

Burada 'i' dəyəri, ədədlərin (integer) array-i olduğunu bildirir. Başqa tip dəyərlər üçün uyğun tip kodunu istifadə edə bilərsiniz. Dəyərləri boş array yaratmaq üçün başlangıca heç bir dəyər vermədən array.array() funksiyasını istifadə edə bilərsiniz. 3. Dəyər əlavə etmək üçün append() metodu ilə array-ə dəyər əlavə edə bilərsiniz:

numbers.append(6)

Bu nümunədə, numbers array-ə 6 rəqəmini əlavə edirik. 4. Dəyərləri istədiyiniz kimi təyin edə bilərsiniz:

numbers[0] = 10
numbers[2] = 30

Bu nümunədə, əvvəlki 0-cı və 2-ci indekslərə uyğun olaraq dəyərləri dəyişdiririk.

Python array-indəki dəyərləri necə silmək olar?

Dəyərləri silmək və ya array-dən çıxartmaq üçün də remove() və ya pop() metotlarını istifadə edə bilərsiniz.

Python-da ədədi siyahını sort etmək üçün kod yazın?

my_list = [3, 5, 1, 2, 4]
my_list.sort()
print(my_list)  # Output: [1, 2, 3, 4, 5]
my_list = [3, 5, 1, 2, 4]
new_list = sorted(my_list)
print(new_list)  # Output: [1, 2, 3, 4, 5]
data_list = [120, 60, 80, 1, -8, 20, 15, -18]
new_list = []

while data_list:
    minimum = data_list[0]
    for x in data_list: 
        if x < minimum:
            minimum = x
    new_list.append(minimum)
    data_list.remove(minimum)    

print(new_list)
# Output: [-18, -8, 1, 15, 20, 60, 80, 120]

Python-da sorting alqoritmləri nələrdir?

Python-da sorting alqoritmləri aşağıdakı kimidir:

  • Bubble Sort: Ən sadə və ən yavaş sorting alqoritmidir. Ardıcıllığın elementlərini qarşılaşdıraraq və yerlərini dəyişdirərək sıralayır.
  • Insertion Sort: Ardıcıllığı elementlərini bir-bir seçib uyğun yerdǝ yerlǝşdirir.
  • Selection Sort: Ardıcıllığı elementlərini ən kiçik və ya ən böyük elementi taparaq və onu uyğun yerdǝ yerlǝşdirir.
  • Merge Sort: Ardıcıllığı iki hissǝyǝ bölür, hǝr hissǝni ayrıca sıralayır vǝ sonra birlǝşdirir.
  • Quick Sort: Ardıcıllığı bir pivot elementin Ətrafında bölür, pivotdan kiçik elementlǝri sol tǝrǝfǝ, böyük elementlǝri isǝ sağ tǝrǝfǝ yerlǝşdirir vǝ sonra hǝr hissǝni ayrıca sıralayır.
  • Heap Sort: Ardıcıllığı bir max-heap yaradır vǝ hǝr addımda root elementi silir vǝ sonuncu element ilǝ ƏvƏzlƏyir.
  • Timsort: Python-un built-in sort funksiyasının istifadƏ etdiyi alqoritmdir. Merge sort vǝ insertion sort-un birləşməsidir. və s.

merge sort, quick sort, heap sort vǝ timsort alqoritmlƏri Ən sürətli vǝ Ən effektiv alqoritmlƏrdir. Bubble sort, insertion sort vǝ selection sort isǝ Ən yavaş vǝ Ən az effektiv alqoritmlƏrdir.

Fayldakı böyük hərflərin sayını hesablamaq üçün effektiv kod yaza bilərsinizmi?

with open("file.txt", "r") as f:
    data = f.read()
    count = sum(1 for c in data if c.isupper())
    print(count)

Python-da bir siyahını necə tərsinə çevirmək olar?

my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # Output: [5, 4, 3, 2, 1]
my_list = [1, 2, 3, 4, 5]
new_list = my_list[::-1]
print(new_list)  # Output: [5, 4, 3, 2, 1]
my_list = [1, 2, 3, 4, 5]
new_list = []
for i in range(len(my_list)):
    new_list.append(my_list.pop())
print(new_list)  # Output: [5, 4, 3, 2, 1]

Python-da list-dən sonuncu obyekti necə siləcəksiniz?

my_list = [1, 2, 3, 4, 5]
my_list.pop()
print(my_list)  # Output: [1, 2, 3, 4]
my_list = [1, 2, 3, 4, 5]
del my_list[-1]
print(my_list)  # Output: [1, 2, 3, 4]
my_list = [1, 2, 3, 4, 5]
my_list.remove(my_list[-1])
print(my_list)  # Output: [1, 2, 3, 4]

Python-da bir siyahıda təkrarlanan elementləri necə tapa bilərəm?

my_list = [1, 2, 3, 1, 2, 5, 6, 7, 8]
duplicates = list(set([x for x in my_list if my_list.count(x) > 1]))
print(duplicates)  # Output: [1, 2]
my_list = [1, 2, 3, 1, 2, 5, 6, 7, 8]
duplicates = []
for x in my_list:
    if my_list.count(x) > 1 and x not in duplicates:
            duplicates.append(x)

print(duplicates)  # Output: [1, 2]

Python-da təsadüfi ədədləri necə yaratmaq olar?

import random
print(random.randint(0, 9))  # Output: 7
import random
print(random.randrange(0, 9))  # Output: 7
import random
print(random.random())  # Output: 0.5458142859366703
import random
print(random.uniform(0, 9))  # Output: 7.421052065120872

Bir sətri kiçik hərflərə necə çevirmək olar?

my_string = "Hello World"
print(my_string.lower())  # Output: hello world

Python-da bir sətri böyük hərflərlə necə çevirmək olar?

my_string = "Hello World"
print(my_string.upper())  # Output: HELLO WORLD

Niyə Python-da list-lər əvəzinə NumPy array-lərindən istifadə edilir?

NumPy array-ləri, Python list-lərindən daha effektivdir. NumPy array-ləri, effektiv yaddaş idarəetməsi üçün optimallaşdırılmışdır və yaddaşda daha az yer tutur.

Python-da polimorfizm nədir?

Python-da polimorfizm, fərqli siniflərin eyni adlı metodlara sahib olması və ya eyni adlı funksiyaların fərqli tipli parametrlərlə işləməsi deməkdir. Polimorfizm, obyektlərin fərqli davranışlar göstərməsinə imkan verir. Python-da polimorfizmin iki növü var:

  • Overriding: Bu növ polimorfizmdə, törəmə (inheritance) ilə əlaqəlidir. Bir sinifin metodunu digər sinifdə eyni adla yenidən yazmaq mümkündür. Bu halda, törəmiş sinifin metodunun davranışı əsas sinifin metodundan fərqli olur. Məs:
class Animal:
    def sound(self):
        print("Animal makes a sound")

class Dog(Animal):
    def sound(self):
        print("Dog barks")

class Cat(Animal):
    def sound(self):
        print("Cat meows")

a = Animal()
d = Dog()
c = Cat()

a.sound() # Animal makes a sound
d.sound() # Dog barks
c.sound() # Cat meows

Bu nümunədə, Animal sinifində sound() metodu var. Dog və Cat sinifləri isə Animal sinifindən törəyir və sound() metodunu yenidən yazır. Bu saydə, hər sinifin obyekti sound() metodunu çağırdıqda fərqli səslər çıxarır.

  • Overloading: Bu növ polimorfizmdə, eyni adlı funksiyaların farklı sayda və ya tipli parametrlərlə işlǝmǝsi mümkündür. Python-da overloading üçün xüsusi sintaksis yoxdur, ancaq *args vǝ **kwargs kimi konvensiyalardan istifadǝ edilir⁴. Mǝs:
def add(a, b):
    return a + b

def add(a, b, c):
    return a + b + c

print(add(1, 2)) # 3
print(add(1, 2, 3)) # 6

Bu nümunǝdǝ add funksiyası iki vǝ ya üç parametr qǝbul edir vǝ onların cǝmini qaytarır. Python-da funksiyaların adları üzrǝ yazıldığı üçün son yazılan funksiyadan istifadǝ olunur.

Python-da inkapsulyasiya nədir?

Inkapsulyasiya, Python dilində bir obyektin iç məlumatları və funksiyaları, digər obyektlərə və xarici tərəfə qarşı gizlədilməsi və məhdudlaşdırılması deməkdir. Bu, bir obyektin iç məlumatlarına yalnız həmin obyektin metodları vasitəsilə müraciət etmək məcburiyyətini tətbiq edir.

Python'da inkapsulyasiya üçün aşağıdakı mehanizmalar mövcuddur:

  1. Access Modifiers (Məhdudiyyət Göstəriciləri): Python dilində dəyişənlər və metodlar üçün public, private və protected olmağa dair formal access modifiers mövcud deyildir. Lakin, konvensiya olaraq _ (alt xətt) ilə başlayan bir dəyişən və ya metod, həmin dəyişənin və ya metodun "protected" olduğunu göstərir. İstifadəçilərə məhdudiyyət tətbiq etmək isə proqramçının sorumluluğundadır.
  2. Getter və Setter metodları: Bir obyektin iç məlumatlarına məhdudiyyət tətbiq etmək üçün getter və setter metodları istifadə edilə bilər. Getter metodları obyektin məlumatlarını almaq üçün, setter metodları isə obyektin məlumatlarını dəyişmək üçün istifadə olunur. Bu metodlar vasitəsilə məlumatların düzgün bir şəkildə əldə edilməsi və dəyişdirilməsi təmin edilir.
  3. Property decorator: Python'da @property decorator'u ilə bir dəyişənin məhdudiyyəti tətbiq edilə bilər. Bu decorator vasitəsilə dəyişəni metod kimi əldə etmək, dəyişmək və ya silmək üçün istifadə edə bilərik. Bu, dəyişənin daxilindəki işləmələrə nəzarət etməyə imkan verir və dəyişənin dəyərlərini tənzimləyir.

Inkapsulyasiya, bir obyektin iç məlumatlarının gizlədilməsi və yalnız obyektin tərəfından müraciət edilməsi prinsipi ilə daha məhdudiyyətli və təhlükəsiz kodlar yazmağa imkan verir. Bu sayədə, məlumatlara təsadüfi dəyişikliklər edilməsi və kodun istifadəsi

Python-da lambda funksiyası nədir?

Python-da lambda funksiyası adı olmayan funksiyadır. Yəni, funksiyaya ad verilmir. Biz artıq bilirik ki, Python-da normal funksiyaları təyin etmək üçün def açarı sözü istifadə olunur. Eynilə, Python-da anonim funksiyaları təyin etmək üçün lambda açarı sözü istifadə olunur. Lambda funksiyaları normal Python funksiyaları kimi davranır və argumentlər qəbul edir. Məsələn:

# Normal funksiyası
def add(x, y):
    return x + y

# Lambda funksiyası
add = lambda x, y: x + y

Hər iki funksiya da eyni işi görür: iki ədədi toplayır və nəticəni qaytarır. Lakin lambda funksiyası daha qısa və daha sade yazılır.

Python-da multi-threading nədir?

Python-da multi-threading bir prosesin eyni anda birdən çox iş parçasını (thread) icra etməsinə imkan verir. Multi-threading ilə proqramın icra müddəti azalır və müxtəlif vəzifələri eyni zamanda yerinə yetirir. Python-da multi-threading üçün threading modulundan istifadə edilir. Bu modul thread yaratmaq, başlatmaq, dayandırmaq və idarə etmək üçün funksiyalar və siniflər təqdim edir. Məsələn:

# threading modulunu idxal edirik
import threading

# thread funksiyasını təyin edirik
def print_hello():
    print("Hello world!")

# thread obyektini yaradırıq
t = threading.Thread(target=print_hello)

# thread-i başladırıq
t.start()

# thread-in bitməsini gözləyirik
t.join()

Bu kodda print_hello funksiyasını bir thread-də icra etmək üçün threading.Thread sinifindən bir obyekt yaradırıq. target parametri thread funksiyasını göstərir. start metodu thread-i başladır, join metodu isə əsas proqramın thread-in bitməsini gözləməsinə imkan verir.

append() və extend() metodları arasındakı fərq nədir?

append()extend() metodları, Python dilində list-lər üçün mövcud olan metodlardır. Bu metodlar list-ə dəyər əlavə etmək üçün istifadə olunur. append() metodu, list-ə bir element əlavə etmək üçün istifadə olunur. extend() metodu isə list-ə bir list əlavə etmək üçün istifadə olunur. Məsələn:

my_list = [1, 2, 3, 4, 5]
my_list.append(6)
print(my_list)  # Output: [1, 2, 3, 4, 5, 6]

my_list1 = [1, 2, 3, 4, 5]
my_list1.extend([6, 7, 8])
print(my_list1)  # Output: [1, 2, 3, 4, 5, 6, 7, 8]

Python Flask verilənlər bazası sorğularını necə idarə edir?

Flask, verilənlər bazası sorğularını idarə etmək üçün SQLAlchemy kitabxanasından istifadə edir. SQLAlchemy, Python dilində verilənlər bazası ilə işləmək üçün istifadə olunan ən populyar kitabxanalardan biridir. SQLAlchemy, verilənlər bazası sorğularını idarə etmək üçün ORM (Object Relational Mapper) tətbiq edir. ORM, verilənlər bazası ilə obyekt-əlaqəli proqramlaşdırma (Object-Relational Programming) üçün istifadə olunan bir proqramlaşdırma tərzidir. ORM vasitəsilə, verilənlər bazası ilə işləmək üçün SQL sorğuları yazmaq yerinə Python obyektləri ilə işləmək olur.

Python-da docstring nədir?

Python-da docstring, bir funksiya, metod və ya sinifin üstündəki stringdən ibarət olan bir stringdir. Docstring, funksiya, metod və ya sinifin təsviri kimi istifadə olunur.

Python-da multi-threading-in məhdudiyyətləri nələrdir?

Python-da multi-threading-in ən böyük məhdudiyyəti Python Global İnterpreter Kilidi (GIL) adlanan bir mekanizmadır. GIL, Python tərcüməçisinin eyni anda yalnız bir thread-i icra etməsinə imkan verir. Bu o deməkdir ki, multi-threading ilə CPU-yüklü işləri paralel icra etmək mümkün deyil. GIL-dən qaçmaq üçün multiprocessing modulundan istifadə etmək lazımdır.

Python-da multi-threading-in başqa məhdudiyyətləri də var. Məsələn:

  • Thread-lər arasında məlumat paylaşmaq və ya əlaqə qurmaq üçün xüsusi sinxronizasiya mexanizmlərinin istifadəsi lazımdır.
  • Thread-lər arasında xüsusi resurslara müraciət etmək üçün lock-lardan istifadə etmək lazımdır.
  • Thread-lər arasında argument ötürmək üçün queue və ya pipe kimi abstraksiyalardan istifadə etmək lazımdır.
  • Thread-lər arasında xəta yoxlamaq üçün threading.excepthook funksiyasından istifadə etmək lazımdır.

Python-da slicing nədir?

Python-da slicing, bir ardıcıllığın (list, tuple, string və s.) bir hissəsini seçmək üçün istifadə olunan bir əməldir. Slicing, ardıcıllığın indekslərini göstərərək ardıcıllığın bir hissəsini seçmək üçün istifadə olunur. Məsələn:

my_list = [1, 2, 3, 4, 5]
print(my_list[1:3])  # Output: [2, 3]

Funksional proqramlaşdırma nədir? Python funksional proqramlaşdırma tərzinə əməl edirmi? Əgər belədirsə, Python-da funksional yönümlü proqramlaşdırmanı həyata keçirmək üçün bir neçə metodu sadalayın.

Funksional proqramlaşdırma bir proqramlaşdırma paradiqmasıdır ki, onda proqramlar riyazi funksiyalar kimi təsvir olunur. Funksional proqramlaşdırma paradiqmasında dəyişənlər yoxdur, yalnız sabit dəyərlər və funksiyalar var. Funksional proqramlaşdırma paradiqmasının faydaları arasında kodun oxunaqlığı, test edilməsi, paralel işləməsi və yenidən istifadəsi sayıla bilər.

Python funksional proqramlaşdırma tərzinə əməl edir, yəni onda funksional proqramlaşdırmanın bəzi xüsusiyyətləri mövcuddur. Lakin Python tamamilə funksional deyil, çünki onda dəyişənlər, obyekt-yönümlülük və digər paradiqmalar da var. Python-da funksional yönümlü proqramlaşdırmanı həyata keçirmək üçün bir neçə metodu sadalaya bilərik:

  • Lambda funksiyaları: adı olmayan və ya bir sıra ifadələrdən ibarət olan funksiyalardır³. Məsələn: lambda x: x * 2 bir ədədi ikiyə vurur.
  • Map, filter və reduce funksiyaları: bunlar bir siyahıya və ya iterasiya oluna bilir obyektlere bir funksiyayı tətbiq edir və nəticini qaytarır. Məsələn: map(lambda x: x * 2, [1, 2, 3]) siyahının hər elementini ikiyə vurur və yeni siyahı qaytarır.
  • List comprehension: bu bir sintaksis şirinliyidir ki, onunla siyahılara map və ya filter kimi Əmrlar verilir. Məs: [x * 2 for x in [1, 2, 3]] map funksiyasının eyni işini görür.
  • Generatorlar: bunlar iterator kimi davranan obyektlardır ki, onlar lazım olduqca dövrün növbәti elementini yaradır. Mәsәlәn: (x * 2 for x in [1, 2, 3]) bir generator ifadәsidir ki, onun elementlәrini next() funksiyası ilә almaq olar.
  • Dekoratorlar: bunlar başqa bir funksiyanın üzәrinә geyinәn vә ya onu dәyişdirәn funksiyalardır. Mәsәlәn: @staticmethod dƏkoratoru bir metodun statik olmasını tәmin edir.

Python-da monkey patching nədir?

Monkey patching Python-da bir sinifin və ya modulun atributlarını icra zamanı dəyişmək deməkdir. Monkey patching ilə proqramın nəzərdə tutulan davranışını dəyişdirib, yeni xüsusiyyətlər əlavə etmək və ya mövcud xüsusiyyətləri təkmilləşdirmək mümkündür. Monkey patching bəzən testlər, debug və ya üçüncü tərəf kitabxanaları ilə işləmək üçün faydalı ola bilir. Lakin monkey patching həmçinin riskli və problemli ola bilir, çünki onunla proqramın oxunaqlığı azalır, kodun sürdürülməsi çətinləşir və istənilməyən yan təsirlər yarana bilir. Məsələn:

import bar 
bar.do_something_expensive = lambda: 'Something really cheap.'

Bu kodda bar modulundan do_something_expensive funksiyasını monkey patch edirik vә onu ucuz bir әmәliyyatla әvәz edirik.

Python-da / və // operatoru arasındakı fərq nədir?

Python-da / operatoru ardıcıllıqların (list, tuple, string və s.) elementlərini bölür və nəticəni float tipində qaytarır. // operatoru isə ardıcıllıqların elementlərini bölür və nəticəni integer tipində qaytarır. Məsələn:

print(10 / 3)  # Output: 3.3333333333333335
print(10 // 3)  # Output: 3

Pandas nədir?

Pandas, Python programlama dilində yayımlanan açık mənbəli bir verilənlər analiz kitabxanasıdır. "Pandas" adı, "panel datası" kimi ifadə edilən verilənlərin manipulyasiyasını və analizini kolaylaşdırmağa kömək edir.

Pandas, verilənlər ilə işləmək və onları manipulyasiya etmək üçün güclü və sadə bir alətdir. İki əsas veri strukturu üzərində işləyir: DataFrame və Series.

  • DataFrame: DataFrame, bir cədvəl formasında təşkil olunmuş məlumatlara əsaslanan iki ölçülü bir veri strukturudur. Bu, sətirlər və sütunlar şəklində məlumatları saxlamaq üçün çox rahatdır. DataFrame, SQL tablosuna bənzəyən bir formatdır və verilənlərinizi filtrə etmək, dəyişdirmək, analiz etmək və başqa bir çox əməliyyatlar üçün işlətməyə imkan verir.

  • Series: Series, yalnız sütunlardan ibarət bir veri strukturudur. Bir sütundakı veriləri təmsil edir və indekslənmiş olur. Series, bir verilənləri sıralamaq, filtrləmək, həmçinin istədiyiniz bir çox veri işləmlərini yerinə yetirmək üçün istifadə olunur.

Pandas, verilənlərə, boşluqlara, eksik verilənlərə, CSV, Excel, SQL və digər fayl formatlarına çox rahat şəkildə yükləmə və saxlama imkanı verir. Həmçinin, verilənləri filtrə etmək, dəyişdirmək, sıralamaq, qruplaşdırmaq, statistik analizlər aparmaq, görsəlləşdirmək və digər çox sayda verilənlər işləmə əməliyyatlarını gerçəkləşdirmək üçün də daxilində bir çox funksiyalar və metodlar mövcuddur.

Pandas, Python dilində verilənlər analizində və verilənlərə əməl etməkdə populyar və yaygın şəkildə istifadə olunan bir kitabxanadır.

Dataframes nədir?

DataFrame, bir cədvəl formasında təşkil olunmuş məlumatlara əsaslanan iki ölçülü bir veri strukturudur. Bu, sətirlər və sütunlar şəklində məlumatları saxlamaq üçün çox rahatdır. DataFrame, SQL tablosuna bənzəyən bir formatdır və verilənlərinizi filtrə etmək, dəyişdirmək, analiz etmək və başqa bir çox əməliyyatlar üçün işlətməyə imkan verir.

Dataframe-də itkən dəyərləri necə aşkar etmək və onlarla necə başa çıxmaq olar?

Dataframe-də itkən dəyərləri aşkar etmək üçün isnull() və ya isna() metodlarından istifadə edə bilərik. Bu metodlar DataFrame-dəki hər bir dəyərin itkən olub olmadığını yoxlayır və True və ya False qiymətləri qaytarır. True qiyməti itkən dəyəri göstərir. Məsələn:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f', 'h'], columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df)
# Output:
#         one       two     three
# a -0.204708  0.478943 -0.519439
# b       NaN       NaN       NaN
# c -0.555730  1.965781  1.393406
# d       NaN       NaN       NaN
# e  0.092908  0.281746  0.769023
# f  1.246435  1.007189 -1.296221
# g       NaN       NaN       NaN
# h  0.274992  0.228913  1.352917

print(df.isnull())
# Output:
#      one    two  three
# a  False  False  False
# b   True   True   True
# c  False  False  False
# d   True   True   True
# e  False  False  False
# f  False  False  False
# g   True   True   True
# h  False  False  False

print(df.isna())
# Output:
#      one    two  three
# a  False  False  False
# b   True   True   True
# c  False  False  False
# d   True   True   True
# e  False  False  False
# f  False  False  False
# g   True   True   True
# h  False  False  False

Regresiya nədir?

Pythonda regresiya statistikada regresiya analizinin tətbiqi deməkdir. Pythonda regresiya analizi üçün müxtəlif kitabxanalar və alətlər mövcuddur. Məs: scikit-learn, statsmodels, pandas və s. Pythonda regresiya analizi ilə bir və ya bir neçə asılı olmayan dəyişənin digər asılı dəyişənə təsirini ölçmək, münasibət və ya bağlılıq təyin etmək, nümunələndirmək və ya proqnozlaşdırmaq mümkündür. Pythonda regresiya analizinin növləri arasında sadə və ya cüt regresiya, çoxlu regresiya, loqit regresiya, polinomial regresiya və s. sayıla bilir.

Classification nədir?

Pythonda classification maşın öyrənməsinin bir növüdür ki, onda verilənləri müəyyən kateqoriyalara və ya siniflərə ayırmaq mümkündür. Pythonda classification üçün müxtəlif alqoritmlar və kitabxanalar mövcuddur. Məsələn: scikit-learn, tensorflow, keras və s. Pythonda classification ilə verilənləri nümunələndirmək, təsnifat etmək, proqnozlaşdırmaq və ya törətmək mümkündür. Pythonda classification alqoritmlarının növləri arasında Naive Bayes, Loqistika Regresiya, K-nearest neighbors (KNN), Support Vector Machine (SVM), Decision Tree, Random Forest və s. sayıla bilir.

SVN nədir?

Pythonda SVN (Support Vector Machine) classification üçün istifadə olunan bir alqoritmdir. Pythonda SVN üçün müxtəlif kitabxanalar mövcuddur. Məsələn: scikit-learn, tensorflow, keras və s. Pythonda SVN ilə verilənləri nümunələndirmək, təsnifat etmək, proqnozlaşdırmaq və ya törətmək mümkündür.

Python istifadə edərkən faizləri hesablamaq üçün ən asan yol nədir?

Pythonda faizləri hesablamaq üçün ən asan yol arifmetik operatorlardan istifadə etməkdir. Məsələn: faiz = məbləğ * faiz dərəcəsi / 100 Bu formulla verilmiş məbləğin faizini hesablaya bilərik. Məs: faiz = 1000 * 10 / 100 Bu kod nəticə olaraq 100 verir, yəni 1000 manatın 10 faizi 100 manatdır. Pythonda faizləri hesablamaq üçün başqa bir yol da math kitabxanasından istifadə etməkdir. Bu kitabxana riyazi funksiyaları və sabitlərini təqdim edir. Məs: import math faiz = math.fmod(məblәğ, faiz dәrәcәsi) Bu formulla verilmiş mәblәğin faizini hesablaya bilәrik. Mәsələn: import math faiz = math.fmod(1000, 10) Bu kod nәticә olaraq 0 verir, yәni 1000 manatın 10 faizi tam bölünür vә qalıq yoxdur.

İterativ metoddan istifadə etmədən verilmiş sətirin palindrom olub-olmadığını yoxlamaq üçün Python proqramı yazın?

def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome("madam"))  # Output: True
print(is_palindrome("hello"))  # Output: False

Siyahıdakı ədədlərin cəmini hesablamaq üçün Python proqramı yazın

def sum(numbers):
    total = 0
    for x in numbers:
        total += x
    return total

print(sum((8, 2, 3, 0, 7)))  # Output: 20

Bubble çeşidləmə alqoritmini yerinə yetirmək üçün Python-da proqram yazın

def bubble_sort(nums):
    swapped = True
    while swapped:
        swapped = False
        for i in range(len(nums) - 1):
            if nums[i] > nums[i + 1]:
                nums[i], nums[i + 1] = nums[i + 1], nums[i]
                swapped = True

random_list_of_nums = [5, 2, 1, 8, 4]
bubble_sort(random_list_of_nums)
print(random_list_of_nums)  # Output: [1, 2, 4, 5, 8]

Ulduz üçbucağını yaratmaq üçün Python-da proqram yazın?

n = 5
for i in range(n):
    print("*" * (i+1))

# Output:
# *
# **
# ***
# ****
# *****
n = 5
for i in range(n):
    print(" " * (n-i-1), end="")
    print("*" * (2*i+1), end="")
    print(" " * (n-i-1))

# Output:
#     *
#    ***
#   *****
#  *******
# *********
n = 5
for i in range(n):
    print(" " * (n-i-1), end="")
    print("*", end="")
    if i > 0:
        print(" " * (2*i-1), end="")
        print("*", end="")
    print(" " * (n-i-1))

# Output:
#     *
#    * *
#   *   *
#  *     *
# *********

Python-da Fibonacci seriyası yaratmaq üçün proqram yazın

def fibonacci(n):
    n1, n2 = 0, 1
    count = 0

    while count < n:
        print(n1)
        nth = n1 + n2
        n1 = n2
        n2 = nth
        count += 1

fibonacci(5)

# Output:
# 0
# 1
# 1
# 2
# 3

Ədədin sadə olub olmadığını yoxlamaq üçün Python-da proqram yazın

def prime_number(n):
    return all(n % i != 0 for i in range(2, n))

print(prime_number(9))  # Output: False
print(prime_number(11))  # Output: True
def prime_number(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

print(prime_number(9))  # Output: False
print(prime_number(11))  # Output: True

Pythonda simvolun ASCII dəyərini çap etmək üçün proqram yazın

c = 'p'
print("The ASCII value of '" + c + "' is", ord(c))

# Output: The ASCII value of 'p' is 112

Insertion sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın

def insertion_sort(nums):
    for i in range(1, len(nums)):
        item_to_insert = nums[i]
        j = i - 1
        while j >= 0 and nums[j] > item_to_insert:
            nums[j + 1] = nums[j]
            j -= 1
        nums[j + 1] = item_to_insert

random_list_of_nums = [9, 1, 15, 28, 6]
insertion_sort(random_list_of_nums)
print(random_list_of_nums)  # Output: [1, 6, 9, 15, 28]

Merge sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın

def merge_sort(nums):
    if len(nums) > 1:
        mid = len(nums) // 2
        left = nums[:mid]
        right = nums[mid:]

        merge_sort(left)
        merge_sort(right)

        i = 0
        j = 0
        k = 0

        while i < len(left) and j < len(right):
            if left[i] < right[j]:
                nums[k] = left[i]
                i += 1
            else:
                nums[k] = right[j]
                j += 1
            k += 1

        while i < len(left):
            nums[k] = left[i]
            i += 1
            k += 1

        while j < len(right):
            nums[k] = right[j]
            j += 1
            k += 1

random_list_of_nums = [120, 45, 68, 250, 176]
merge_sort(random_list_of_nums)
print(random_list_of_nums)  # Output: [45, 68, 120, 176, 250]

Quick sort alqoritmini yerinə yetirmək üçün Python-da proqram yazın

def partition(nums, low, high):
    pivot = nums[(low + high) // 2]
    i = low - 1
    j = high + 1
    while True:
        i += 1
        while nums[i] < pivot:
            i += 1

        j -= 1
        while nums[j] > pivot:
            j -= 1

        if i >= j:
            return j

        nums[i], nums[j] = nums[j], nums[i]

def quick_sort(nums):
    def _quick_sort(items, low, high):
        if low < high:
            split_index = partition(items, low, high)
            _quick_sort(items, low, split_index)
            _quick_sort(items, split_index + 1, high)

    _quick_sort(nums, 0, len(nums) - 1)

random_list_of_nums = [22, 5, 1, 18, 99]
quick_sort(random_list_of_nums)
print(random_list_of_nums)  # Output: [1, 5, 18, 22, 99]

Timsort alqoritmini yerinə yetirmək üçün Python-da proqram yazın

def insertion_sort(nums):
    for i in range(1, len(nums)):
        item_to_insert = nums[i]
        j = i - 1
        while j >= 0 and nums[j] > item_to_insert:
            nums[j + 1] = nums[j]
            j -= 1
        nums[j + 1] = item_to_insert

def merge(left_list, right_list):
    sorted_list = []
    left_list_index = right_list_index = 0

    left_list_length, right_list_length = len(left_list), len(right_list)

    for _ in range(left_list_length + right_list_length):
        if left_list_index < left_list_length and right_list_index < right_list_length:
            if left_list[left_list_index] <= right_list[right_list_index]:
                sorted_list.append(left_list[left_list_index])
                left_list_index += 1
            else:
                sorted_list.append(right_list[right_list_index])
                right_list_index += 1

        elif left_list_index == left_list_length:
            sorted_list.append(right_list[right_list_index])
            right_list_index += 1

        elif right_list_index == right_list_length:
            sorted_list.append(left_list[left_list_index])
            left_list_index += 1

    return sorted_list

def tim_sort(nums):
    min_run = 32
    n = len(nums)

    for i in range(0, n, min_run):
        insertion_sort(nums[i:i + min_run])

    size = min_run
    while size < n:
        for start in range(0, n, size * 2):
            midpoint = start + size - 1
            end = min((start + size * 2 - 1), (n - 1))

            merged_list = merge(left_list=nums[start:midpoint + 1], right_list=nums[midpoint + 1:end + 1])

            nums[start:start + len(merged_list)] = merged_list

        size *= 2

random_list_of_nums = [120, 45, 68, 250, 176]

tim_sort(random_list_of_nums)

print(random_list_of_nums)  # Output: [45, 68, 120, 176, 250]

Python-da bir sətri tərsinə çevirmək üçün proqram yazın

def reverse_string(s):
    return s[::-1]

print(reverse_string("Hello"))  # Output: olleH

print() funksiyasının parametrləri nələrdir?

print() funksiyasının parametrləri arasında sep, end, file, flushvar sayıla bilər.

  • sep parametri, print() funksiyasının parametrləri arasında ayrılmış verilənləri ayırmaq üçün istifadə olunur. Məsələn: print("Hello", "World", sep=" ") Bu kod nəticə olaraq Hello World verir.
  • end parametri, print() funksiyasının parametrləri arasında verilənlərin sonuna nə işləmək istədiyimizi göstərmək üçün istifadə olunur. Məsələn: print("Hello", "World", end="!") Bu kod nəticə olaraq Hello World! verir.
  • file parametri, print() funksiyasının parametrləri arasında verilənləri fayla yazmaq üçün istifadə olunur. Məsələn: print("Hello", "World", file=open("output.txt", "w")) Bu kod nəticə olaraq output.txt faylında Hello World verir.
  • flush parametri, print() funksiyasının parametrləri arasında verilənləri tamamilə yazmaq üçün istifadə olunur. Məsələn: print("Hello", "World", flush=True) Bu kod nəticə olaraq Hello World verir.
  • var parametri, print() funksiyasının parametrləri arasında verilənləri istənilən sayda qədər çapa vermək üçün istifadə olunur. Məsələn: print("Hello", "World", var="!") Bu kod nəticə olaraq Hello World! verir.

About

Bu repo Azərbaycan dilində python müsahibə sual və cavabları üçün yaradılmışdır.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published