2011-07-07 16 views
33

Jaki jest najlepszy sposób, aby sformatować poniższy kawałek kodu odpowiednio do PEP8:Python lista argumentów funkcja formatowania

oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, 
    token=token, verifier=verifier, http_url=ACCESS_TOKEN_URL) 

Problem polega na tym, że jeśli umieścić więcej niż jeden parametr na pierwszej linii, linia przekracza 79 postacie. Gdybym umieścić każdy z parametrów w osobnej linii z 4 pomieszczeń wcięć wygląda dość brzydki:

oauth_request = oauth.OAuthRequest.from_consumer_and_token(
    consumer, 
    token=token, 
    verifier=verifier, 
    http_url=ACCESS_TOKEN_URL) 

Najlepszym rozwiązaniem, które przychodzi mi do głowy jest dodanie dodatkowego wcięcia na lepsze rozróżnienie:

oauth_request = oauth.OAuthRequest.from_consumer_and_token(
         consumer, 
         token=token, 
         verifier=verifier, 
         http_url=ACCESS_TOKEN_URL) 

Próbuję opracować dla mnie ogólną zasadę, aby używać go dla metod z długim wywołaniem w pierwszym wierszu i kilkoma parametrami, które nie mieszczą się w jednej linii.

Odpowiedz

24

Moje czytanie documentation sugeruje, że 2 i 3 są dopuszczalne, ale wygląda na to, że 2 jest preferowane (mówię to, ponieważ wygląda na to, że 2 na 3 jest obsługiwane w ten sposób w przykładach, nie sądzę że specyfikacja stylu jest tutaj bardzo specyficzna). 1 jest obecnie (spójrz na dokumenty pod linią Arguments on first line forbidden when not using vertical alignment)

+2

Nie zgadzam się, wolę 3. Chciałbym, aby wcięcia kontynuacyjne były znacznie większe niż normalne wcięcia w strukturę bloku (4 spacje) w celu ich rozróżnienia. Normalnie ustawiałbym argumenty kontynuacji połączenia z pierwszym argumentem (po paragrafie otwierającym). Ale w tym przypadku (ponieważ nie ma wystarczającej ilości miejsca) linie kontynuacji powinny być wyrównane pod znakiem "oauth" po znaku równości. –

+0

@ Cóż, moje czytanie dokumentacji jest takie, że obie są w porządku. Właśnie zauważyłem, że 2 jest w kilku przykładach. Chociaż myślę, że jest to inny odstęp od standardowych 4 spacji. Prawdę powiedziawszy, mam silną preferencję do zrównania wszystkich argumentów z otwartym parenem zwanym metodą, ale ma to więcej wspólnego z tym, do czego jestem przyzwyczajony, niż z natury "Pythonicznym". – cwallenpoole

+0

Ja też się nie zgadzam. W powiązanej dokumentacji zarówno pierwszy, jak i drugi przykład podane w tym poście są wyraźnie wymienione w sekcji "Nie", co oznacza, że ​​nie powinny być używane. Aby wyjaśnić, każdy argument nie musi być koniecznie dostarczany w osobnej linii. Jeśli jednak musisz kontynuować instrukcję w wielu liniach, każda linia powinna mieć dodatkowe (tj. Podwójne) wcięcie, aby odróżnić ją od bloków potomnych lub rodzeństwa. Ostatni przykład jest technicznie akceptowalny ze względu na dodatkowe wcięcie, ale preferowane byłoby użycie ośmiu spacerów dla każdej dodatkowej linii. –

Powiązane problemy