2017-08-02 73 views
0
for i in range(1,1000): 
    try: 
     x = some_crazy_function(my_parm(i)) 
     if x in massive: 
      raise Exception() 
     massive.append(x) 
     x = dict(qnother_crazy_functionsl(x.replace('X','Y'))) 
     x = new_func(x['constant'])[0] 
     next.append(x) 
    except: 
     break 

我是相當新的蟒蛇,我跑跨過這片段,同時保持別人的代碼這是引發異常的正確方法嗎? (蟒蛇)

對我來說,看起來像一個可怕的方式退出循環。 這是Python代碼的接受方式,我會習慣它,或者它看起來像壞?

+0

當代碼遇到異常時會引發異常。 「x」在「巨量」中沒有任何異常 - 除非你通常希望'x'不是'巨量的'。在性能方面,例外情況非常昂貴。所以,請使用'break'。 – DyZ

+0

使用bare:'except:'也是一個壞主意,因爲它還捕獲'KeyboardInterrupt'和其他一些你可能不想捕獲的東西。 – kindall

回答

1

在最簡單的情況下,一個break將跳出循環的最佳(最簡單的)方式:

if x in massive: 
    break 

但是,如果拋出和捕獲異常是你的使用情況更容易,我會建議先定義自己的用戶定義異常類:

class MassiveException(Exception): 
    pass 

接下來,你可以把它像這樣:

if x in massive: 
    raise MassiveException() 

啥都趕上這樣的:

except MassiveException: 
    ... # do something here 

這是更好,因爲它讓你的意圖明確,也擺脫的包羅萬象,除了這會吞噬其他異常你真的不要」不想吞下。

+0

謝謝大家。正如我所說,這看起來是一種不好的編碼方式,而你的迴應似乎會加強我的感覺。感謝代碼片段,以更好地實現此片段。 – Don

+0

@Don如果這有幫助,請考慮將其標記爲已接受。謝謝! –

+0

回覆:接受對不起,但雖然我理解我對執行的無知的概念。如何在這裏獲得換行? – Don