Python için en iyi 30 uygulama, ipucu ve püf noktası

Yazar | Erik-Jan van Baaren

Çevirmen | Crescent Moon, Baş Editör | Tu Min

Aşağıdaki çeviridir:

Yılbaşı bittikten sonra hepimiz kendi işimize döndük. Yeni yılda ve yeni havada, bu makaleyi size Python dilinin en iyi 30 uygulamalarını, ipuçlarını ve tekniklerini sunmak için kullanmak istiyorum.Umarım tüm çalışkan programcılara yardımcı olur ve umarım herkes iyi çalışır!

1. Python sürümü

Size hatırlatmak isterim: 1 Ocak 2020'den itibaren Python artık resmi olarak Python 2'yi desteklemiyor. Bu makaledeki örneklerin çoğu yalnızca Python 3'te çalıştırılabilir. Hala Python 2.7 kullanıyorsanız, lütfen şimdi yükseltin.

2. Python'un minimum sürümünü kontrol edin

Kullanıcılarınızın komut dosyasını uyumsuz bir sürümde çalıştırmadığından emin olmak için koddaki Python sürümünü kontrol edebilirsiniz. Kontrol yöntemi aşağıdaki gibidir:

sys.version_info değilse > (2, 7): # kullanıcınızı 10 yıl koştuğu için azarlayın # python sürümü elif değil sys.version_info > = (3, 5): # Kullanıcılarınıza yükseltmesi gerektiğini lütfen söyleyin # çünkü 3.5 özelliklerini kullanıyorsunuz

3. IPython

IPython, esasen gelişmiş bir kabuktur. Yalnızca otomatik tamamlama için denemeye değer ve işlevi bundan daha fazlasıdır, ayrıca indiremeyeceğim birçok komuta sahiptir, örneğin:

  • % cd: geçerli çalışma dizinini değiştir

  • % düzenleme: Düzenleyiciyi açın ve düzenleyiciyi kapattıktan sonra yazılan kodu yürütün

  • % env: Mevcut ortam değişkenlerini görüntüleyin

  • % pip install: Paketi etkileşimli kabuktan çıkmadan kurabilirsiniz

  • % time ve% timeit: Python kodunu çalıştırma süresini ölçün

Komutların tam listesi için, görüntülemek için lütfen burayı tıklayın (https://ipython.readthedocs.io/en/stable/interactive/magics.html).

Ayrıca çok kullanışlı bir işlev vardır: önceki komutun çıktısına bakın. Giriş ve Çıkış gerçek nesnelerdir. Üçüncü komutun çıktısını Out şeklinde kullanabilirsiniz.

IPython'un kurulum komutu aşağıdaki gibidir:

pip3 ipython'u yükle

4. Anlama listesi

Listeleri doldurmak için döngülerin zahmetli kullanımından kaçınmak için liste anlamalarını kullanabilirsiniz. Liste anlamanın temel sözdizimi aşağıdaki gibidir:

Temel bir örnek vermek gerekirse: Bir listeyi bir dizi sıralı sayı ile doldurun:

mylist = baskı (mylist) #

İfadeleri kullanabildiğiniz için, bazı aritmetik işlemler de yapabilirsiniz:

kareler = baskı (kareler) #

Harici işlevleri bile çağırabilirsiniz:

def bir_işlev (a): dönüş (a + 5) / 2 my_formula = baskı (my_formula) #

Son olarak, listeyi filtrelemek için "if" seçeneğini de kullanabilirsiniz. Aşağıdaki örnekte, yalnızca 2'ye bölünebilen sayıları tutuyoruz:

filtrelenmiş = baskı (filtrelenmiş) #

5. Nesnenin bellek kullanımını kontrol edin

Nesnenin bellek kullanımını kontrol etmek için sys.getsizeof kullanabilirsiniz:

ithalat sys mylist = aralık (0, 10000) baskı (sys.getsizeof (mylist)) # 48

Bekle, bu büyük liste neden sadece 48 bayt içeriyor?

Çünkü buradaki aralık işlevi bir sınıf döndürür, ancak bir liste gibi davranır. Bellek kullanımı açısından aralık, gerçek sayı listesinden çok daha etkilidir.

Liste anlama özelliğini kullanarak aynı aralıkta bir sayı listesi oluşturmayı deneyebilirsiniz:

ithalat sys myreallist = baskı (sys.getsizeof (myreallist)) # 87632

6. Birden çok değer döndür

Python'daki bir işlev sözlükler, listeler veya sınıflar kullanmadan birden fazla değişkeni döndürebilir. Aşağıdaki gibi:

def get_user (id): # kullanıcıyı veritabanından getir # .... dönüş adı, doğum tarihi isim, doğum tarihi = get_user (4)

Dönüş değerlerinin sayısı sınırlıysa, tabi ki sorun değil. Bununla birlikte, dönüş değerlerinin sayısı 3'ü aşarsa, dönüş değerini bir (veri) sınıfına koymalısınız.

7. Veri sınıflarını kullanın

Python, 3.7 sürümünden beri veri sınıfları sağlamaktadır. Normal sınıflarla veya diğer yöntemlerle karşılaştırıldığında (birden çok değer veya sözlük döndürmek gibi), veri sınıflarının birkaç bariz avantajı vardır:

  • Veri türünde daha az kod var

  • __Eq__ yöntemleri sağladıkları için veri sınıflarını karşılaştırabilirsiniz

  • Hata ayıklarken, veri sınıfının çıktısını kolayca alabilirsiniz, çünkü veri sınıfı ayrıca __repr__ yöntemini de sağlar

  • Veri türleri tür ipuçlarına ihtiyaç duyar, böylece hata olasılığını azaltabilirsiniz

Veri sınıflarının örnekleri aşağıdaki gibidir:

veri sınıflarından veri sınıfını içe aktar @dataclass sınıf Kartı: rank: str takım elbise: str kart = Kart ("Q", "kalpler") baskı (kart == kart) # Doğru baskı (card.rank) # 'Q' baskı (kart) Kart (sıra = 'Q', renk = 'kalpler')

Ayrıntılı talimatlar için lütfen buraya tıklayın (https: // realpython .com / python-veri sınıfları /).

8. Değişken değişkenleri

Aşağıdaki ipuçları çok akıllıcadır ve size birden fazla kod satırı kazandırabilir:

a = 1 b = 2 a, b = b, a baskı (a) # 2 baskı (b) # 1

9. Sözlükleri birleştirme (Python 3.5 ve üstü)

Python 3.5'ten başlayarak, sözlükleri birleştirme işlemi daha kolay hale geldi:

dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} birleştirilmiş = {** dict1, ** dict2} baskı (birleştirilmiş) # {'a': 1, 'b': 3, 'c': 4}

Tuş tekrarlanırsa, ilk sözlükteki tuşun üzerine yazılır.

10. Dizenin ilk harfini büyük yazın

Aşağıdaki teknik gerçekten biraz sevimli:

mystring = "10 harika python numarası" print (dizgim.title) '10 Harika Python Hileleri '

11. Dizeyi listelere bölün

Bir dizeyi dizeler listesine bölebilirsiniz. Aşağıdaki örnekte, kelimeleri ayırmak için boşluk kullanıyoruz:

mystring = "Hızlı kahverengi tilki" mylist = mystring.split ('') baskı (mylist) #

12. Dizeler listesinden bir dize oluşturun

Yukarıdaki tekniğin aksine, bir dizgi listesinden bir dizi oluşturabilir ve ardından her kelime arasına boşluklar ekleyebiliriz:

mylist = mystring = "" .join (mylist) baskı (dizgim) #'Hızlı kahverengi tilki'

Neden mylist.join ("") olmadığını sorabilirsiniz, bu iyi bir soru!

Bunun temel nedeni, String.join işlevinin yalnızca listelere değil, aynı zamanda yinelenebilir nesnelere de katılabilmesidir. String'e koymak, aynı işlevi birden çok yerde tekrarlamaktan kaçınmaktır.

13. İfadeler

Bazı insanlar emojiyi çok sever, bazıları ise nefret eder. Burada ciddiyetle beyan ederim: Sosyal medya verilerini analiz ederken ifadeler işe yarayabilir.

Öncelikle emoji modülünü kuralım:

pip3 emoji yükle

Kurulum tamamlandıktan sonra aşağıdaki şekilde kullanabilirsiniz:

emojiyi içe aktar sonuç = emoji.emojize ('Python: thumbs_up:') baskı (sonuç) # 'Python:' # Bunu da tersine çevirebilirsiniz: sonuç = emoji.demojize ('Python is') baskı (sonuç) # 'Python: thumbs_up:'

Daha fazla emoji örneği ve dokümantasyonu için lütfen buraya tıklayın (https://pypi.org/project/emoji/).

14. Dilimlemeyi Listele

Liste dilimlemenin temel sözdizimi aşağıdaki gibidir:

a

başlatma, durdurma ve adımların tümü isteğe bağlıdır. Belirtilmezse, aşağıdaki varsayılan değerler kullanılacaktır:

  • başlangıç: 0

  • end: dizenin sonu

  • Aşama 1

Örnekler aşağıdaki gibidir:

# Buradan kolayca yeni bir liste oluşturabiliriz # bir listenin ilk iki öğesi: first_two = baskı (ilk_iki) # # Ve adım değeri 2 kullanırsak, # her ikinci sayıyı atlayabiliriz # bunun gibi: adımlar = yazdır (adımlar) # # Bu dizelerde işe yarar çok . Python'da, # bir dizgeye bir liste gibi davranabilirsiniz # harf: mystring = "abcdefdn nimt" baskı (dizgim) #'Yol açtı'

15. Ters dizeler ve listeler

Bir dizeyi veya listeyi ters çevirmek için yukarıdaki dilimleme yöntemini kullanabilirsiniz. Öğeleri tersine çevirmek için adımı -1 olarak belirtmeniz yeterlidir:

revstring = "abcdefg" baskı (revstring) # "gfedcba" revarray = baskı (revarray) #

16. Kedileri gösterin

Sonunda makalemde kedileri göstermek için yeterli bir bahane buldum, haha! Tabii ki, resimleri görüntülemek için de kullanabilirsiniz. Öncelikle Python görüntü kitaplığının bir dalı olan Pillow'u kurmanız gerekiyor:

pip3 Yastık yükleyin

Ardından, aşağıdaki resmi kittens.jpg adlı bir dosyaya indirebilirsiniz:

Ardından, yukarıdaki resmi aşağıdaki Python kodu ile görüntüleyebilirsiniz:

PIL'den içe aktarma görüntüsü im = Image.open ("kedi.jpg") im.show baskı (im.format, im.size, im.mode) # JPEG (1920, 135 7) RGB

Yastık, resmi sergilemenin ötesinde birçok işleve sahiptir. Analiz edebilir, yeniden boyutlandırabilir, filtreleyebilir, geliştirebilir, deforme edebilir ve daha fazlasını yapabilir. Belgelerin tamamı için lütfen buraya tıklayın (https://pillow.readthedocs.io/en/stable/).

17. harita

Python'un harita adı verilen yerleşik bir işlevi vardır, sözdizimi aşağıdaki gibidir:

harita (işlev, birşey_düzenlenebilir)

Bu nedenle, yürütülecek bir işlev veya yürütülecek bir şey belirtmeniz gerekir. Yinelenebilir herhangi bir nesne işe yarar. Aşağıdaki örnekte bir liste belirledim:

def büyük (ler): geri dönüş mylist = liste (harita (üst,)) baskı (mylist) # # Bir dize gösterimini dönüştür # İnts listesine bir sayı. list_of_ints = list (harita (int, "1234567"))) print (list_of_ints) #

Kendi kodunuza daha yakından bakabilir ve bir yerde döngüyü değiştirmek için haritayı kullanıp kullanamayacağınızı görebilirsiniz.

18. Bir liste veya dizedeki tek öğeyi alın

Bir koleksiyon oluşturmak için işlev kümesini kullanırsanız, bir liste veya liste benzeri nesnenin tek öğesini elde edebilirsiniz:

mylist = baskı (set (mylist)) # {1, 2, 3, 4, 5, 6} # Ve bir dizge bir # harf listesi, ayrıca Bu şekilde bir dizeden # benzersiz harf: baskı (set ("aaabbbccc gg deeefff ")) # {'a', 'b', 'c', 'd', 'e', 'f'}

19. En sık görülen değeri bulun

En sık oluşan değeri şu şekilde bulabilirsiniz:

test = baskı (max (set (test), key = test.count)) # 4

Yukarıdaki kodu anlayabiliyor musunuz? Yukarıdaki kodu bulup okumaya devam etmek istiyorum.

Anlamadın mı Sana söyleyeyim:

  • max listenin maksimum değerini döndürür. Parametre anahtarı, sıralamayı özelleştirmek için bir parametre işlevini kabul eder, bu durumda test.count. Bu işlev, yineleme nesnesinin her öğesine uygulanır.

  • test.count, listenin yerleşik bir işlevidir. Bir parametreyi kabul eder ve bu parametrenin oluşum sayısını sayar. Bu nedenle, test.count (1) 2, test.count (4) ise 4 döndürür.

  • set (test), testteki tüm benzersiz değerleri ({1, 2, 3, 4}) döndürecektir.

Bu nedenle, bu kod satırıyla tamamlanan işlem: önce testin tüm benzersiz değerlerini alın, yani {1, 2, 3, 4}; ardından max, her değer için list.count çalıştıracak ve maksimum değeri döndürecektir.

Bu kod satırı benim kişisel icadım değil.

20. Bir ilerleme çubuğu oluşturun

Kulağa ilginç gelen kendi ilerleme çubuğunuzu oluşturabilirsiniz. Ancak daha kolay bir yol ilerleme paketini kullanmaktır:

pip3 yükleme ilerlemesi

Ardından, kolayca bir ilerleme çubuğu oluşturabilirsiniz:

progress.bar'dan içe aktarma çubuğu bar = Bar ('İşleme', maks = 20) aralıktaki i için (20): # Biraz iş yap bar.next bar.finish

21. Etkileşimli bir kabukta _ (alt çizgi operatörü) kullanın

Önceki ifadenin sonucunu almak için alt çizgi operatörünü kullanabilirsiniz.Örneğin, IPython'da şunu yapabilirsiniz:

İçinde: 3 * 3 Çıkış: 9In: _ + 3 Çıkış: 12

Bu, Python Shell'de de kullanılabilir. Ek olarak, IPython kabuğunda, Girişten Çıkışa ifadesinin değerini de alabilirsiniz. Örneğin, yukarıdaki örnekte, Out 9 sayısını döndürecektir.

22. Hızla bir web sunucusu oluşturun

Hızlı bir şekilde bir web hizmeti başlatabilir ve mevcut dizinin içeriğini sağlayabilirsiniz:

python3 -m http .server

Bir dosyayı meslektaşlarınızla paylaşmak veya basit bir HTML web sitesini test etmek istediğinizde bu yöntemi düşünebilirsiniz.

23. Çok satırlı dizi

Çok satırlı dizeleri koda eklemek için üçlü tırnak kullanabilirsiniz, ancak bu yaklaşım ideal değildir. Üç tırnak arasına yerleştirilen her şey, aşağıda gösterildiği gibi, kodun formatı da dahil olmak üzere bir dizge haline gelecektir.

Yalnızca birden çok dizeyi bir araya getirebilen değil, aynı zamanda kodu temiz tutan başka bir yöntemi tercih ediyorum. Tek dezavantajı, satırsonu karakterini açıkça belirtmeniz gerekmesidir.

s1 = "" "Çok satırlı dizeler konulabilir üçlü tırnak arasında. İdeal değil "" "kodunuzu biçimlendirirken baskı (s1) # Çok satırlı dizeler konulabilir # üçlü tırnak arasında. İdeal değil # kodunuzu biçimlendirirken s2 = ("Ayrıca birden fazla \ n birleştirebilirsiniz" + "bu şekilde dizeler, ancak yapmanız gerekecek \ n" "açıkça yeni satırlara koyun") baskı (s2) # Ayrıca birden çok # dize bu şekilde, ancak yapmanız gerekecek # açıkça satırsonu satırlarına koyun

24. Koşullu atamada üçlü operatör

Bu yöntem, kodun okunabilirliğini sağlarken kodu daha kısa hale getirebilir:

eğer değilse

Örnekler aşağıdaki gibidir:

x = "Başarılı!" if (y == 2) başka "Başarısız!"

25. Elemanların oluşumlarını sayın

Listedeki tüm benzersiz öğelerin oluşum sayısını almak için koleksiyon kitaplığındaki Counter'ı kullanabilirsiniz ve Counter bir sözlük döndürür:

koleksiyonlardan ithalat Sayacı mylist = c = Sayaç (mylist) baskı (c) # Sayaç ({1: 2, 2: 1, 3: 1, 4: 1, 5: 3, 6: 2}) # Ve dizelerde işe yarıyor çok : baskı (Sayaç ("aaaaabbbbbccccc")) # Sayaç ({'a': 5, 'b': 5, 'c': 5})

26. Karşılaştırma operatörlerine bağlantılar

Daha okunaklı ve özlü kod oluşturmak için Python'da birden çok karşılaştırma işlecini birbirine bağlayabilirsiniz:

x = 10 # Onun yerine: eğer x > 5 ve x < 15: baskı ("Evet") # Evet # Ayrıca şunları da yazabilirsiniz: 5 ise < x < 15: baskı ("Evet") # Evet

27. Renk ekleyin

Terminalin ekran rengini Colorama ile ayarlayabilirsiniz:

koloramadan içe aktarım Ön, Geri, Stil baskı (Ön.KIRMIZI + 'bazı kırmızı metinler') baskı (Back.GREEN + 've yeşil arka planlı') yazdır (Style.DIM + 've soluk metin') baskı (Style.RESET_ALL) print ('şimdi normale dön')

28. Tarih işleme

Standart tarih modülüne ek olarak, python-dateutil modülü çok güçlü bir uzantı sağlar.Aşağıdaki komutla kurabilirsiniz:

pip3 python-dateutil'i yükle

Bu kitaplığı birçok sihirli işlemi gerçekleştirmek için kullanabilirsiniz. Burada sadece bir örnek veriyorum: Günlük dosyasındaki tarihin bulanık analizi:

dateutil.parser içe aktarma ayrıştırmasından itibaren logline = 'INFO 2020-01-01T00: 00: 01 Mutlu yıllar, insan.' zaman damgası = ayrıştırma (log_line, fuzzy = True) baskı (zaman damgası) # 2020-01-0100:00:01

Sadece şunu hatırlamanız gerekir: Normal Python tarih ve saat işlevlerinin çözemediği sorunlarla karşılaştığınızda, python-dateutil'i düşünebilirsiniz!

29. Tam Sayı Bölme

Python 2'de, işlenenlerden biri kayan noktalı sayı olmadığı sürece bölme operatörü (/) varsayılan olarak tamsayı bölmeyi kullanır. Bu nedenle şunları yazabilirsiniz:

# Python 25/2 = 25 / 2.0 = 2.5

Python 3'te, bölme operatörü (/) varsayılan olarak kayan nokta bölme şeklindedir ve tamsayı bölme operatörü // şeklindedir. Bu nedenle yazmanız gerekir:

Python 35/2 = 2.55 // 2 = 2

Bu değişikliğin arkasındaki motivasyon için lütfen PEP-0238 (https: // www .python.org / dev / peps / pep-0238 /).

30. Pazı ile karakter kümesini tespit edin

Bir dosyanın karakter kümesini algılamak için chardet modülünü kullanabilirsiniz. Bu modül, büyük miktarda rastgele metni analiz ederken çok kullanışlıdır. Kurulum yöntemi aşağıdaki gibidir:

pip pazı takmak

Kurulum tamamlandıktan sonra, chardetect komut satırı aracını aşağıdaki gibi kullanabilirsiniz:

chardetect somefile.txt somefile.txt: güven 1.0 ile ascii

Kütüphaneyi programlamada da kullanabilirsiniz.Tam dokümantasyon için lütfen buraya tıklayın (https://chardet.readthedocs.io/en/latest/usage.html).

Yukarıdakiler sizin için Yeni Yıl hediyem, umarım beğenirsiniz! Başka becerileriniz, ipuçlarınız ve uygulamalarınız varsa, lütfen aşağıya bir mesaj bırakın!

Orijinal: https: // directiondatascience .com / 30-python-en iyi uygulamalar-ipuçları-ve-püf noktaları-caefb9f8c5f5

Bu makale bir CSDN çevirisidir, lütfen yeniden basımın kaynağını belirtin.

HTML5 kodu "cazibesi" ile arama motorlarının dikkatini nasıl çekebilir?
önceki
Rust giriş kılavuzu: satır üstüne satır | CSDN blog seçimi
Sonraki
Her genç geliştiricinin bilmesi gereken altı şey
Guangxi, taşkın mevsiminde dağ demiryollarının güvenliğini sağlamak için demiryolu ağlarının bakımı için "uçak gemisi" gönderiyor
Wuxi Yuantouzhu kiraz çiçekleri en iyi izleme dönemine girer, turistler "Romantik Tarih" e gider
Yemek önerisi: lezzetli ananaslı kruvasan ekmeği
Geri dönüşüm kutusu kurtarma ücreti var mı? Dosyaları 1 dakika içinde bulmayı öğretmek
Eyalet Büyük Veri Bürosu "ikili kayıt" çalışmasını derinleştiriyor ve "yardım topluluğu salgını önleme" gönüllü faaliyetlerini başlatıyor
Baidu Industry Recovery Big Data: İşe alım arama popülaritesi% 165 arttı
Büyük ve küçük boncuklar yeşim tabağına düşer Loudinin kültür endüstrisinin gelişimini teşvik etmek için "Beş Ünlü Projesi" nin özeti
Savaş Salgını Günlüğü: "Ağır sorumluluğu üstlenmek ve karanlık gecede lambayı tutmak dile"
Zhong Nanshanın ekibi Xu Yuanda: yedi veya sekiz kritik hasta ile en fazla bir konsültasyon
Dongguan Belediye Halk Hastanesi, uzmanlara ücretsiz danışmanlık hizmeti veren "Yeni Koroner Pnömoni Takip Kliniğini" açtı
5 yılda 2 milyondan fazla insanın akını! Guangzhou, önümüzdeki 15 yıl içinde 4,7 milyon kişi ekleyebilir
To Top