2012-08-12 15 views
9

Daha çağırır ve daha biz zincirleme kullanın işlevi çağırır:Python stil

value = get_row_data(original_parameters).refine_data(leval=3).transfer_to_style_c() 

Uzun olabilir. Tercih edilen kodda uzun satır kaydetmek için?

value = get_row_data(
    original_parameters).refine_data(
    leval=3).transfer_to_style_c() 

ya:

value = get_row_data(original_parameters)\ 
     .refine_data(leval=3)\ 
     .transfer_to_style_c() 

Bunun iyi ters eğik çizgi \ kullanın ve yeni satıra .function koymak hissediyorum. Bu, her bir işlev çağrısının kendi satırına sahip olmasını sağlar, okunması kolaydır. Ancak bu pek çok kişi tarafından tercih edilmiyor. Ve kod ince hatalar yaptığında, hata ayıklaması zor olduğunda, her zaman endişelenmeye başladım, backslash (\)'dan sonra bir boşluk veya bir şey olabilir.

Python tarzı kılavuzundan alıntı:

Uzun çizgiler parantez içinde ifadeler sararak birden fazla satır üzerinde kırılabilir. Satır devamında ters eğik çizgi kullanılması tercih edilir. Devam eden hattını uygun şekilde girdiğinizden emin olun. İkili bir operatörünü kırmak için tercih edilen yer, operatörden önce değil, bundan sonradır. Ya bu seçenek hakkında

+0

Stil kılavuzu bir * kılavuzdur *; Mevcut durumunuza uymadığında göz ardı edin. :-) –

+0

İkinci editörünü çoğu editörde otomatik girinti ile elde edebilirsiniz ve '\\' kullanılmasını engeller - bu sadece benim kişisel tarzım olur - http://pastebin.com/8Ld9sX5G –

+0

parantez içinde ifade ve noktadan sonraki ayrı yöntemler, satır başına bir tane ('' function.' yerine .function ') – joaquin

cevap

13

Ben bir açılış parantez için non-recommended\ sayesinde kaçınan aşağıdakileri tercih eğilimindedir. Bu tek dizedir

message = ("This is a very long" 
      " one-line message put on many" 
      " source lines.") 

: bunlar satır sınırı başına önerilen 79 karaktere ötesine kalmamak

\ -daha az yapının benzer bir tür de dize değişmezleri ile sıklıkla yararlıdır Python yorumlayıcısı tarafından etkin bir şekilde yaratılan edebi (bu, bellekte çoklu dizeler oluşturan ve son dizge elde edilene kadar bunları birden çok kez kopyalayan dizelerin toplanmasından çok daha iyidir). Python'un biçimindeki kod biçimlendirmesi numaralı güzel.

+0

devamı için doğru girinti stilini merak ettim [stil kılavuzunu] buldum (https://www.python.org/dev/peps/pep-0008/) – Shanimal

1

: Orada başka parametrelerdir ama tutarlılığı korumak için onları tutarsanız virgül gereksiz

value = get_row_data(original_parameters, 
      ).refine_data(leval=3, 
       ).transfer_to_style_c() 

Not. Bu sözdizimi

value = (get_row_data(original_parameters) 
     .refine_data(level=3) 
     .transfer_to_style_c()) 

bir avantajı her yöntem çağrısı kendi satırında olmasıdır:

+0

Bu iyi bir alternatiftir. –

0

(Sorunuzun :) yorumlara bakınız rağmen) veya alternatifler bu cevap benim kendi tercihi alıntı değil:

Çubuk zaten herhangi bir proje üzerinde stil yönergelerine - belirtilmediği değilse, o zaman olarak tutmak Kod tabanının geri kalanıyla tarzınızdaki gibi tutarlı.

Aksi taktirde, beğendiğiniz bir stili seçin ve bunlara sadık kalmayın - ve diğerlerinin, tek satırda makul bir şekilde okunamazsa (ya da tanımlamak isterseniz) zincirleme işlev çağrılarını nasıl takdir edeceğiniz konusunda bir şekilde bilgilendirin. .