Əvvəldə görülən Python səhvləri | Most common mistakes in Python

Поделиться
HTML-код
  • Опубликовано: 12 июн 2024
  • Python proqramlaşdırma dilində əvvəldə başlayanların bir çoxu eyni səhv görür. Səhvlərin çoxu Python dilinin özünə aid spesifik özəl biliklərdir. C dilindən fərqli olaraq mutable və immutable data tiplərin memory-də nəcə təşkil olunduğunu bilçək lazımdır.
    1) == və ya is ?
    2) FOR dövrü istifadə zamanı gəzilən list və ya digər muttable elementin sayı nə azalmalı nə də ki çoxalmalıdır.
    3) File Handling problemi: bir fayl açıldısa o mütləq bağlanmalıdır. Düzgün bilib düzgün tətbiq etmək lazım.
    4) Tiplər müqayisəsi və isinstance funksiyası.
    5) Sayğac yaradarkən C dilindəki kimi düçünmək lazım deyil.
    6) Dəyişən adları problemi və düzgün formalaşmış advermə konvensiyası.
    7) Python dilində MUTABLE data tiplərin memory-də fərqli varlılığı.
    8) Funksiyalara HEÇ VAXT default dəyər LIST VERİLMİR!!!
    #python #kody_az #kodyaz #viral #viralcode #viralvideo #random #code #coder #azerbaycan #azerbaijan #azərbaycan #baku #baki #programming #programmer #codes #hazırlıq #hazirliq #kurs #kurslar #course #courses #online #onlinecourses #test #quiz

Комментарии • 12

  • @NatiqFm
    @NatiqFm 17 дней назад

    2. Basqa bir yol mumkundur.
    Umumiyetle, listi iterate ederken elementlerni deyismek gozlenilmez neticeler verir, onun gore shallow copy istifade ederek bu problemden yayinmaq olar
    l = ['p', 'y', 't', 'h', 'o', 'n']
    for item in l[:]:
    if item == "t":
    l.remove(item)
    else:
    print(item)
    # p y h o n

    • @kody_az
      @kody_az  17 дней назад

      Yox. Elə düz deyil. Bu halda siz davam edib sonda nə nəticə əldə etdiniz görməyəcəksiniz. Özü də ki mən demişdim ki dəyişən adlarını düz yazın))

    • @NatiqFm
      @NatiqFm 17 дней назад

      deyisen adlarinin meseleye aiddiyati yoxdur, yazdigim kodun son setrinde gorunen neticeni yazmisam

    • @kody_az
      @kody_az  17 дней назад

      Bəs mən də omu deyirəm axı ki olmaz elə. Sizdə dəyişən olmadan kopyanı gəzib içində print edirsiniz. Bəs əgər for dövründən sonra nəticəyə baxmaq istəsəm?! Onda necə olacaq? Sizin kodun misalında hər kəsə vurğulayıram ki dəyişən adlaeı ğözəl olsa yaxşıdır. Mən anlayıram məqsədiniz başqa vurğulama idi amma eyni zamanda da elə dəyişən adları da düz olsa super olar.

  • @sabirrajabov
    @sabirrajabov 17 дней назад

    Bəs:
    list = ['P', 'y', 't', 'h', 'o', 'n']
    for x in list:
    if x == 'y':
    list.remove(x)
    print(x)
    Else blokunuda remove edərək daha clean eləmək olar

    • @NatiqFm
      @NatiqFm 17 дней назад

      # p y t o n
      t saxlayib h sildi. umumiyetle list iterate ederken onu update etmek meslehet deyil, internal counterlere gore ferqli neticeler gosterir

    • @kody_az
      @kody_az  17 дней назад

      Gəzdiyin list elementini gərək silməyəsən. Mövzu elə odur. Əlavə olaraq da list adında dəyişən yaratmaq düz deyil. İcazə verirsə də Python amma bunu böyük fəsadı var. Belə etməyin.

    • @sabirrajabov
      @sabirrajabov 17 дней назад

      @@kody_az təbii ki normalda həm built in həm də import olunmuş packagelərə yaxın vəyaxud birə bir var adları qoymaq best prac deyil. Bu sadəcə sample code snipped idi ona görə

  • @NatiqFm
    @NatiqFm 17 дней назад

    1. python deyende bu cpythona xas bir xususiyetdir. 99% hallarda default interpreter cpythondur. == deyerleri, 'is' ise eyniliyini yoxlayir. identity de object yaranda olur. Maraqlisi odur ki kicik stringlerde bezi funksiyalarda python cache-den istifade edir bezilerinde ise yenisin yaradir.
    var1 = 'salam'
    var2 = 'salam'
    print(var1 is var2.strip()) # True
    print(var1 is var2.lower()) # False
    oxsar hal integerlerde de mumkundur. cpython [-5, 255] cacheden istifade edir
    var1 = 100
    var2 = 100
    print(var1 is var2) # True
    var1 = 1000
    var2 = 1000
    print(var1 is var2) # False
    compile kimi istifade olunan cpythonun optimizasiya qeyri-adiliklerinden biridir

    • @kody_az
      @kody_az  17 дней назад

      var1 = 100
      var2 = 100
      print(var1 is var2) # True
      var1 = 1000
      var2 = 1000
      print(var1 is var2) # False yox TRUE olacaq!
      =====
      Nəticə:
      True
      True
      =====
      İndiki halda və son versiyalarda artıq ikisi də True cavabı verir. Amma əvvəl bəli siz deyən kimi idi.

    • @kody_az
      @kody_az  17 дней назад

      STR dünyasında strip metodu dəyişiləcək heçnə olmasa eyni elementi qaytarır və üzərində əməliyyat aparmır.
      var1 = 'salam'
      var2 = 'salam'
      print(var1 is var2.strip())
      print(id(var1), id(var2.strip()))

    • @NatiqFm
      @NatiqFm 16 дней назад

      mesele de odur, strip deyiselecek hecne olmasa eyni obyyekti qaytarir amma lower deyiselecek hecn olmasa bele yeni obyekti yaradir. bunu string interning istifade etmekle qarsisin almaq olar