2016-11-25 48 views
-3

我見過這樣寫的代碼:根據樣式,在python中使用sys.exit()結束應用時,可以使用類似參數的函數嗎?

if __name__ == "__main__": 
    #... 
    result = someFunction(someParameter) 
    sys.exit(result) 

即使這樣,你寫的函數的調用在sys.exit()函數:

if __name__ == "__main__": 
    #... 
    sys.exit(someFunction(someParameter)) 

是哪個按照風格最正確的選擇?

+6

這不是一種選擇,它是同樣的事情,只是在第二個你沒有創建任何變量。 – ettanany

+1

如果還有一些代碼會怎麼樣(忘記'sys.exit()')?如果使用變量,則會存儲其值,如果使用函數內聯的結果會發生什麼情況?它的返回值是否在使用後仍然在堆棧中? 你必須調用'gc.collect()'嗎?關於python內存管理的答案會很棒。 –

+0

這是一樣的結果,但不一樣的東西..我想知道根據風格什麼是最好的選擇。就像freebie說的那樣,最可讀的選項是正確的,所以第一個。 – Denr2

回答

3

兩者都是等價的,但我認爲你知道這一點。如果你從風格的角度來問,我會說你應該總是喜歡這個更具可讀性的選項。在這種情況下,我認爲第一個更具可讀性。

Python按慣例使用snake_case,所以你可能會考慮使用它來定義你的變量和函數。

您可能還想要將result變量的名稱更改爲更具描述性。

exit_status = some_function(some_parameter) 
sys.exit(exit_status) 

希望這是你以後的樣子。

編輯:@AnttiHaapala提出了一個很好的觀點,succeeded不是最好的變量名稱,因爲0是Python中的Falsy,但認爲pass是退出代碼。我已將其更名爲exit_status

+0

好吧,我不會將變量命名爲「succeeded」,因爲'sys.exit'採用退出代碼,成功爲'0',但在Python中,'0'被認爲是* falsy *值。 –

+0

@AnttiHaapala好點。你會怎麼稱呼它? – freebie

+0

也許那'exit_status'或'exit_code' –

相關問題