我對python(2.7)很陌生,並且對於什麼是Pythonic最有效的方法有疑問。我的代碼(A類的一部分)貌似這個(有點天真版):Python風格:嵌套與額外功能
def calc_pump_height(self):
for i in range(len(self.primary_)):
for j in range(len(self.primary_)):
if self.connections_[i][j].sub_kind_ in [1,4]:
self.calc_spec_pump_height(i,j)
def calc_spec_pump_height(self,i,j):
pass
(顯然通行證將被別的東西所取代,操縱這個類的對象的屬性,而不會產生一個返回值)我想問我應該怎麼做:我可以避免第二個函數,並將額外的代碼直接寫入第一個函數,擺脫一個函數(簡單比複雜更好),但創建一個重度同時嵌套函數(Flat比嵌套更好)。
我還可以建立某種形式的名單理解,以避免使用雙迴路,例如:
def calc_pump_height(self):
ra = range(len(self.primary_))
[self.calc_spec_pump_height(i,j) for i,j in zip(ra, ra)]
(我不得不如果條件進入第二個功能;這也將創建一個空 - 但我不在乎這一點,因爲calc_spec_pump_height
應該操縱對象,而不是返回一些有用的東西)
實質上:我遍歷2D列表,測試每個對象的某個特徵,然後用這個對象做些事情。
以上哪種方法是'最好的'?還是有另一種我失蹤的方式?
恕我直言,第二種方式看起來很乾淨,但它可能只是我... – Dair
出於好奇,爲什麼你的一些屬性的結束與_?在Python中,如果你試圖指出某個類是私有的,那麼你通常在開始時加一個下劃線,而不是結尾。 – Ben
@Ben:你說得對,現在我知道了。這實際上是我剛開始使用Python時寫的一段代碼的一部分,我正在重寫它,但沒有重新命名變量(最初的想法是區分本地變量和類變量)。在Python中這是(除了違反標準)冗餘由於'自我'。在我的其他項目(例如:編程微控制器)它不是。) – cfrei89