W przypadku krotki jednoelementowej wymagany jest końcowy przecinek.
a = ('foo',)
A co z krotką z wieloma elementami? Wydaje się, że niezależnie od tego, czy końcowy przecinek istnieje, czy nie, oba są ważne. Czy to jest poprawne? Moim zdaniem końcowy przecinek jest łatwiejszy do edycji. Czy to zły styl kodowania?
a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
Odpowiedzi:
We wszystkich przypadkach z wyjątkiem pustej krotki przecinek jest ważny. Nawiasy są wymagane tylko wtedy, gdy są wymagane z innych powodów składniowych: aby odróżnić krotkę od zestawu argumentów funkcji, pierwszeństwo operatorów lub aby umożliwić podziały wierszy.
Końcowy przecinek dla krotek, list lub argumentów funkcji jest dobrym stylem, zwłaszcza gdy masz długą inicjalizację, która jest podzielona na wiele wierszy. Jeśli zawsze umieszczasz końcowy przecinek, nie dodasz kolejnej linii na końcu oczekując dodania kolejnego elementu, a zamiast tego po prostu utworzysz prawidłowe wyrażenie:
Zakładając, że zaczęło się to jako lista 2-elementowa, która została później rozszerzona, poszła źle w być może nie od razu oczywisty sposób. Zawsze dołączaj przecinek na końcu i unikaj tej pułapki.
źródło
Tylko w przypadku krotek jednoelementowych wymagane jest ujednoznacznienie definicji krotki lub wyrażenia otoczonego nawiasami.
W przypadku więcej niż jednej pozycji nie jest to już konieczne, ponieważ jest całkowicie jasne, że jest to krotka. Jednak końcowy przecinek może ułatwić ich definiowanie za pomocą wielu wierszy. Możesz dodać na końcu lub zmienić kolejność elementów bez łamania składni, ponieważ przez przypadek pominięto przecinek.
na przykład,
Zwróć uwagę, że dotyczy to również innych kolekcji (np. List i słowników), a nie tylko krotek.
źródło
key: value,
każdym wierszu i nie trzeba zwracać uwagi na przecinki podczas dodawania nowych rzeczy.Kolejną zaletą końcowych przecinków jest to, że sprawiają, że różnice wyglądają ładniej. Jeśli zacząłeś z
i zmieniłem to na
Różnica wyglądałaby tak
Natomiast gdybyś zaczął od końcowego przecinka, np
Wtedy różnica byłaby po prostu
źródło
Jest to opcjonalne: zobacz wiki Pythona .
Podsumowanie: krotki jednoelementowe wymagają końcowego przecinka , ale w przypadku krotek wieloelementowych jest to opcjonalne .
źródło
Weź również pod uwagę sytuację, w której chcesz:
Zatem w tym przypadku zewnętrzne nawiasy są niczym innym jak nawiasami grupującymi. Aby uczynić je krotką, musisz dodać na końcu przecinek. to znaczy
źródło
Końcowy przecinek jest wymagany tylko w przypadku krotek jednoelementowych. Umieszczenie końcowego przecinka dla większych krotek jest kwestią stylu i nie jest wymagane. Jego największą zaletą jest czyste różnice w plikach z wieloliniowymi dużymi krotkami, które są często modyfikowane (np. Krotki konfiguracyjne).
źródło
To prosta odpowiedź.
a = („s”) to ciąg
i
a = ("s",) to krotka z jednym elementem.
Python potrzebuje dodatkowego przecinka w przypadku krotki jednego elementu, aby rozróżnić ciąg i krotkę.
Na przykład spróbuj tego na konsoli Pythona:
a = („s”)
a = a + (1, 2, 3)
Traceback (ostatnie ostatnie połączenie):
Plik stdin, wiersz 1, w module
TypeError: nie można łączyć obiektów „str” i „tuple”
źródło
Innym powodem, dla którego istnieje, jest to, że ułatwia generowanie kodu i
__repr__
funkcje. Na przykład, jeśli masz jakiś obiekt, który jest tak zbudowanyobj(arg1, arg2, ..., argn)
, możesz po prostu napisaćobj.__repr__
jakoJeśli końcowy przecinek nie był dozwolony, ostatni argument musiałby być oznaczony wielkością liter. W rzeczywistości możesz napisać powyższe w jednym wierszu, używając funkcji list (napisałem to dłużej, aby ułatwić czytanie). Nie byłoby to takie łatwe, gdybyś musiał zająć się specjalną sprawą w ostatnim semestrze.
źródło
join
w tym przypadku:def __repr__(self): 'obj(' + ', '.join([repr(arg) for arg in obj.args]) + ')'
.join
.PEP 8 - Przewodnik po stylu dla kodu w Pythonie - Kiedy używać końcowych przecinków
Końcowe przecinki są zwykle opcjonalne, z wyjątkiem tego, że są obowiązkowe podczas tworzenia krotki jednego elementu (aw Pythonie 2 mają semantykę dla instrukcji print). Dla jasności zaleca się ujęcie tego ostatniego w (technicznie zbędne) nawiasy.
Tak:
OK, ale mylące:
Gdy końcowe przecinki są zbędne, często są pomocne, gdy używany jest system kontroli wersji, gdy lista wartości, argumentów lub importowanych elementów ma zostać rozszerzona w czasie. Wzorzec polega na umieszczeniu każdej wartości (itp.) W osobnym wierszu, zawsze dodając końcowy przecinek i dodając nawias zamykający / nawias klamrowy / nawias w następnej linii. Jednak nie ma sensu umieszczanie końcowego przecinka w tym samym wierszu co ogranicznik zamykający (z wyjątkiem powyższego przypadku krotek pojedynczych).
Tak:
Nie:
źródło
Styl kodowania to Twój gust. Jeśli uważasz, że standard kodowania ma znaczenie, istnieje PEP-8, który może Cię poprowadzić.
Co myślisz o wyniku następującego wyrażenia?
Tak, x to tylko liczba.
źródło