wyobrazić to:pythonowy sposób do funkcji/metod z wielu argumentów
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa):
pass
Linia wiadukt 79 znaków, więc jaka jest pythonic sposób go multilinii?
wyobrazić to:pythonowy sposób do funkcji/metod z wielu argumentów
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa):
pass
Linia wiadukt 79 znaków, więc jaka jest pythonic sposób go multilinii?
że wcięcia kolejne linie 2 poziomy:
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta,
theta, iota, kappa):
pass
+1 i zaakceptowany, ponieważ właśnie odpowiedział na pytanie zakładając, że nie jestem idiotą, a rozwiązanie jest kompatybilne z wcięciami spacji i tabulacji. – mkotechno
można dołączyć przerwy linii w nawiasach() lub wsporniki, na przykład
def method(self, alpha, beta, gamma, delta, epsilon, zeta,
eta, theta, iota, kappa):
pass
(ilość spacji aby to jest, oczywiście, zależy od ciebie)
Ale w tym przypadku, można również rozważyć
def method(self, *args):
pass
i/lub
def method(self, **kwargs):
pass
w zależności od sposobu użycia argumentów (i sposobu wywoływania funkcji).
Jeśli masz funkcję, która trwa tak wiele zmiennych jako argumenty, ostatnią rzeczą, którą musisz się martwić o to wcięcie
Naprawdę nie jest to jednak odpowiedź? –
Chcę w górę głosować to tak źle, ale tak ... Powinien być komentarz. – Shog9
po prostu podzielić się otwartym uchwytem raz 79 jest trafiony, to tak:
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota,
kappa):
A kiedy nazwy są zbyt długo zostać wprowadzone po nawiasie otwierającym, robię to tak:
x.long_function_is_long(
long_argument_is_loooooooooooooooooooooooooooooooooooooooong,
longer_argument_is_looooooooooooooooooooooooooooooooooooooooonger
)
I zazwyczaj to zrobić, nie wiem, czy to najlepszy, ale w orki. Ponieważ mam podzielić linię robię je równie dłużej (jeśli mogę):
def method(self, alpha, beta, gamma, delta, epsilon, \
zeta, eta, theta, iota, kappa):
pass
Ponadto, mając taką ilość parametrów polecam takie same jak Dawida, użyj *args
Znak \ jest niepotrzebny. W Pythonie, grupowanie za pomocą nawiasów pozwala kodowi na rozciągnięcie wielu linii - jest to wskazane w PEP 8 http://www.python.org/dev/peps/pep-0008/. –
Nie wiedziałem o tym. Dzięki :) –
myślę " Pythonicznym sposobem odpowiedzi jest spojrzenie głębsze niż składnia. Podanie wielu argumentów do metody wskazuje na prawdopodobny problem z modelem obiektu.
Po pierwsze, czy naprawdę trzeba przekazać tak wiele argumentów tej metodzie? Być może jest to wskazówka, że praca mogłaby być lepiej wykonana gdzie indziej (przez obiekt, który już ma dostęp do zmiennych)?
Jeśli to naprawdę jest najlepsze miejsce dla metody, to czy niektóre z tych argumentów mogą być dostarczone jako zmienne instancji samego obiektu (przez self
)?
Jeśli nie, czy możesz przedefiniować obowiązki obiektu nadrzędnego, aby je uwzględnić?
Jeśli nie, czy można zamknąć dowolny z indywidualnych argumentów w obiekcie złożonym, który formalizuje relację między nimi? Jeśli którykolwiek z argumentów ma coś wspólnego, powinno to być możliwe.
Rozważ grupowanie parametrów w spójny danych posiadających zajęcia – manifest
Dla wszystkich, wiem o * args, ale nie mogę grupa argumenty w ten sposób, ponieważ używam podzbioru Pythona, który nie pozwala tej składni . – mkotechno