2014-06-17 73 views
0

在Python中,是否有更多的綜合方法來寫這個?我們怎樣才能在單線循環中編寫這個?

for n in dir(): 
    if n[0]!='_': delattr(sys.modules[__name__], n) 
+0

有什麼問題你正試圖解決這個問題? –

+1

聽起來像[XY問題](http://meta.stackoverflow.com/questions/66377/what-is-the-xy-problem)。但是,不,如果這是你正在採取的方法,我不相信有一個簡短的方法來寫這個沒有一些非常不明智的利用在列表理解中的副作用(例如'[delattr(sys.modules [__ name__] ,n)for n in dir()if n [0]!=「_」]'但不這樣做!) –

+1

這是一件非常奇怪的事情。不僅僅是因爲你可以刪除'sys',這會停止這個過程.. – DSM

回答

2

這是非常可讀的語法不會改變它。

for n in dir(): 
    if n[0]!='_': 
    delattr(sys.modules[__name__], n) 

可以複雜,但它並沒有感受到 - 代碼必須高於第二短第一簡單

更具可讀性和短代碼是最好的 - 不短,並且無法讀取:)

我會寫這樣的 - 爲人類更加可讀:

for name in dir(): 
    if not name.startswith('_'): 
    delattr(sys.modules[__name__], name) 
+0

好的建議,謝謝。我的問題是關於單線循環,但我很感激。謝謝! –