Python dosya isimlendirme kuralı?


137

PEP-8'in bu bölümünü gördüm. Https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Bunun bir modül / sınıf / paketin dosya adını ifade edip etmediği konusunda net değilim.

Her birine bir örneğim varsa, dosya isimleri uygunsa alt çizgi halinde küçük harf mi olmalı? Veya başka bir şey?


4
tl; dr: iki sınıf olabilir FooBarve FooBizher ikisi de dosyaya girebilir somepkg/foobar.py(böylece:) from somepkg.foobar import FooBarancak sınıf TimerErroriçeri girebilir except/timer_error.py(bu nedenle from except.timer_error import TimerError), çünkü CamelCasebazen kaldırılması kelimesini okumayı zorlaştırır, dolayısıyla snake_casedosya adı için kullanılabilir.
michael

Yanıtlar:


156

Alıntı yapma https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

Modüllerin tümü küçük harfli olmalı. Okunabilirliği arttırırsa modül adında alt çizgiler kullanılabilir. Python paketleri kısa, tümü küçük harfli adlara sahip olmalıdır, ancak alt çizgi kullanımı önerilmemektedir.

İçin sınıflar :

Sınıf adları normalde CapWords kurallarını kullanmalıdır.

Ve işlev ve (yerel) değişken isimleri şöyle olmalıdır:

küçük harf, okunabilirliği artırmak için gerektiğinde alt çizgilerle ayrılmış kelimelerle

Bir modül, sınıf ve paket arasındaki fark için bu cevaba bakınız :

  • Bir Python modülü sadece sınıfları, fonksiyonları ve global değişkenleri gösterebilen bir Python kaynak dosyasıdır.
  • Bir Python paketi sadece Python modülünün bir dizinidir.

Yani PEP 8 size şunu söylüyor :

  • modüller (dosya adları) kısa, tamamen küçük harfli adlara sahip olmalı ve alt çizgi içerebilir;
  • paketler (dizinler) kısa, tamamen küçük harfli , tercihen alt çizgi içermeyen adlara sahip olmalıdır ;
  • sınıflar, CapWords sözleşmesini kullanmalıdır.

PEP 8 isimlerin kısa olması gerektiğini söylemektedir ; bu cevap , değişken isimleri oluştururken nelere dikkat edilmesi gerektiğine dair iyi bir genel bakış sağlar; bunlar diğer isimler için de geçerlidir (sınıflar, paketler, vb. için):

  • değişken isimleri tam tanımlayıcı değildir;
  • ayrıntılara yorumlarda bulunmak;
  • çok özel bir isim çok özel bir kod anlamına gelebilir;
  • hızlı arama için kısa kapsamlar tutun;
  • Okunabilirliği düşünerek zaman harcarlar.

Bitirmek için, adlandırma kurallarına genel bir bakış Google Python Stil Kılavuzu'nda verilmiştir .


5
Ve utanmadan benim anlayışımı onaylamanızı isteyeceğim, modüller sınıflar içeriyor - yani modüller içindeki sınıfları kullanır ve bir modüldeki birden fazla sınıfı alabilir miydiniz?
darkace

6
Evet, bir modülde 0, 1 veya daha fazla sınıfa sahip olabilirsiniz.
agold

1
Projem elimden gelmeden önce bunu bulduğuma sevindim, çünkü tüm paketlerim tıpkı sınıflarım gibi CapsWords sözleşmesini takip ediyordu.
Bas Jansen

1
@ pypmannetjies bu aslında başka bir sorudur, ancak anlaşılabilir isimleri değil, kısa anlaşılabilir isimleri tercih etmeniz gerektiğini söyleyebilirim.
agold

1
Paket adı için, "alt çizgi kullanımı önerilmez", yasak değildir. Python felsefesinde, "pratiklik saflığı geçse de" kuralına uymalısınız. Tabii ki, en iyi kuralı takip etmenin bir yolunu bulmaktır ve pratik (adını bölmek için belki birkaç paket yapmak some> long> nameyerine somelongname?)
Juh_

0

İşte farklı Python ad kuralları türleri için bir bağlantı.

Python için stil rehberi Guido'nun adlandırma kuralları tavsiyelerine dayanmaktadır.

görüntü tanımını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.