2013-01-03 21 views
11

PEP8 bilgi:Satır çok uzun. Django PEP8

models.py:10:80: E501 line too long (83 > 79 characters) 

Models.py:

field = TreeForeignKey('self', null=True, blank=True, related_name='abcdefgh') 

Nasıl doğru bu satırı yazmak için?

+2

Ben django projeleri için bu özel pep8 kuralını görmezden gelmek adil. [Django bu istisnayı kendisi yapar] (https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/). –

+2

Soru iyi ve tüm – Timo

+0

lokalize değil PEP 8 kendisinden unutmayın - "tutarsız ne zaman bilmek - bazen stil rehberi tavsiyeleri sadece geçerli değildir. Şüphe durumunda, en iyi kararınızı kullanın. örnekler ve en iyi neyin göründüğüne karar verin " – 0TTT0

cevap

5

Bu çok özneldir. Ben kesinlikle E501 aşağıdaki olsaydı ben yazmak istiyorum: Genellikle, 100 çok uzun 80.

+0

http: //www.python.org/dev/peps/pep-0008/# maksimum satır uzunluğu –

+6

@hayden: Bu, Python standart kitaplığı için bir stil kılavuzu. Farklı bir çizgi uzunluğunu tercih etmek gayet iyi. – geoffspear

+0

Özellikle pep8 ... – Wyrmwood

19

O 79 karakterden uzun PEP8 sadece bayraklar satır uzunluğundadır "doğru" değil düşünün

field = TreeForeignKey('self', 
         null=True, 
         blank=True, 
         related_name='abcdefgh') 

. Bu konuda endişeleriniz varsa Ama, bunu şöyle yazabiliriz:

field = TreeForeignKey('self', 
         null=True, 
         blank=True, 
         related_name='abcdefgh') 

Ya da bu:

field = TreeForeignKey(
    'self', 
    null=True, 
    blank=True, 
    related_name='abcdefgh', 
) 

Ya gerçekten, birden daha kısa satırlara tek satır kıracak başka stil .

+0

hakkında sorulmamışsa, bu son derece iyi bir örnek. –

+2

@ D.Shawley: Tration virgülleri Python'da gayet iyi. (Genellikle ek argümanlar işleve iletilirse sözdizimi sorunlarından kaçınmak için böyle bir kodlama stili kullanırken onları koyarım.) – mipadi

+1

anahtar kelime ve/veya değişken listesi argümanları kullanıyorsanız bunlar iyi. –

12

Sadece autopep8 adında bu temiz programı buldum! https://github.com/hhatto/autopep8

pip install autopep8 
autopep8 -i models.py 

Ayrıca (yinelemeli) yapabilirsiniz:

autopep8 -ri package/ 

Oto PEP8 yalnızca dosyalar için güvenli değişiklikler, sadece değişen düzen değil, kod mantığı yapar. , TreeForeignKeyTreeForeignKeyWithReferencesToSomethingElse gibi bir şey Hele

field = TreeForeignKey('self', null=True, 
    blank=True, related_name='abcdefgh') 

bu durumda tüm parametreler için dışarı başlayacak:

+1

Bu çok kullanışlıdır! –

+1

Bu harika! Teşekkür ederim! :) [pylint] (https://www.pylint.org/) ile birlikte kullanıldığında, tam teşekküllü bir IDE kullanmayı neredeyse hiç kaçırmıyorum. – CodingInCircles

0

Genellikle parametreleri gibi özgün çizgisi daha derin girinti bir seviye, sıraya olduğunu bölünmüş Açılış parantezi ile hepsini dizilmiş olsaydı pencerenin en sağında. parametrelerin herhangi defaultvalueforcertaincircumstances gibi uzun ismi olsaydı, 80 sütunların altına bütün hepsini sığdırmak mümkün olmayabilir: Ben de tercih

field = TreeForeignKeyWithReferencesToSomethingElse('self', 
                defaultvalueforcertaincircumstances='foo') 

ne zaman dışında (aynı satırda birden işlev parametreleri koymak sadece doğru görünmüyor, ben bir pürist değilim!) böylece dikey alan aşırı derecede genişlemiyor, editörümde başka türlü gerekenden daha fazla zaman harcayacağım.

+0

Birincisi, PEP8 ile gerçekten mutlu değil - [Girinti bölümünde] ilk "Hayır" ı not edin (http://www.python.org/dev/peps/pep-0008/#indentation). –

2

Parçalara ayırmak için çok uygun olmayan gülünç uzun bir diziniz varsa (Sentry DSNs, MIDDLEWARE veya INSTALLED_APPS'deki geçici modül gibi şeyler hakkında düşünmek), satırın sonuna # noqa kodunu yazabilirsiniz. Linterler çizgiyi görmezden gelir. İstediğin dava için kesinlikle kullanmayın.