想象一下這樣的函數/方法:Python化的方式與不少爭論
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa):
pass
線立交橋79個字符,那麼,什麼是對多它Python的方式?
想象一下這樣的函數/方法:Python化的方式與不少爭論
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa):
pass
線立交橋79個字符,那麼,什麼是對多它Python的方式?
我縮進隨後的行2級:
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta,
theta, iota, kappa):
pass
+1並且接受,因爲我只是回答了這個問題,假設我不是白癡,並且解決方案與空格和製表符縮進兼容。 – mkotechno 2010-06-28 22:38:15
可以包括括號內換行符(或支架),例如
def method(self, alpha, beta, gamma, delta, epsilon, zeta,
eta, theta, iota, kappa):
pass
(空格數量,包括,當然,給你)
但在這種情況下,你也可以考慮
def method(self, *args):
pass
和/或
def method(self, **kwargs):
pass
取決於你如何使用參數(以及如何調用函數)。
如果你有一個函數,那麼多的變量作爲自變量,你不用擔心的最後一件事是壓痕
不是真的答案,是嗎? – 2010-06-28 21:05:21
我想投票這很糟糕,但是啊...應該是一個評論。 – Shog9 2010-06-28 21:06:51
我只是拆分開括號一次79被擊中,像這樣:
def method(self, alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota,
kappa):
當名稱太長左括號後要放的,我不喜歡這樣寫道:
x.long_function_is_long(
long_argument_is_loooooooooooooooooooooooooooooooooooooooong,
longer_argument_is_looooooooooooooooooooooooooooooooooooooooonger
)
我經常這樣做,我不知道這是否是最好的,但它瓦特獸人。因爲我要拆我讓他們同樣長的線(如果我可以):也
def method(self, alpha, beta, gamma, delta, epsilon, \
zeta, eta, theta, iota, kappa):
pass
,具有參數,量我會建議同樣的大衛,使用*args
\角色是不必要的。在Python中,使用圓括號進行分組可以使代碼跨越多行 - 這在PEP 8 http://www.python.org/dev/peps/pep-0008/中已經指出。 – 2010-06-28 21:33:30
不知道。謝謝 :) – 2010-06-28 21:35:49
我認爲' Pythonic回答這個問題的方式是比語法更深入。將一個方法的許多參數傳遞給對象模型可能會帶來問題。
首先,您是否真的需要將這麼多參數傳遞給此方法?也許這表明這項工作可以在其他地方更好地完成(通過一個已經可以訪問變量的對象)?
如果這真的是該方法的最佳位置,那麼這些對象本身的實例變量(通過self
)可以提供一些參數嗎?
如果不是,您是否可以重新定義父對象的責任以包含它們?
如果不是,你可以將任何單獨的參數封裝在一個組合對象中,以正式化它們之間的關係嗎?如果任何論點有任何共同點,那麼這應該是可能的。
考慮分組的參數爲凝聚力的數據保持類 – manifest 2010-06-28 21:17:04
對於所有的,我知道* ARGS,但我不能組這樣的觀點,因爲我使用Python的一個子集,它不允許此語法。 – mkotechno 2010-06-28 22:32:55