這看起來很冗長,特別是對於長函數名稱,有沒有更好的方法在Python中執行此操作?如果結果存在,則設置一個變量等於結果
if someRandomFunction():
variable = someRandomFunction()
編輯:更多上下文變量尚未定義,這將是一個樹的新節點。如果someRandomFunction()返回一個值,我只想創建這個節點。而someRandomFunction()應該從不同類型的樹中返回某個節點的字符串表示。
這看起來很冗長,特別是對於長函數名稱,有沒有更好的方法在Python中執行此操作?如果結果存在,則設置一個變量等於結果
if someRandomFunction():
variable = someRandomFunction()
編輯:更多上下文變量尚未定義,這將是一個樹的新節點。如果someRandomFunction()返回一個值,我只想創建這個節點。而someRandomFunction()應該從不同類型的樹中返回某個節點的字符串表示。
這就是我喜歡的解決方案。我認爲它讀得很好。 – kindall 2010-10-20 23:17:54
這個問題並不清楚,在這行代碼執行之前是否定義了「變量」。如果'someRandomFunction()'評估爲False,則會引發NameError異常,因爲變量尚未定義。 – snapshoe 2010-10-21 03:55:36
@ ma3204:我認爲我們必須假定它已經被定義了,因爲如果不是並且'someRandomFunction'返回false,那麼之後使用'variable'的任何代碼也會在原始代碼中產生一個'NameError'。 – 2010-10-21 04:44:21
temp= someRandomFunction()
if temp:
variable = temp
(顯然,如果您還沒有註冊,你不能刪除你的答案。)
這些不是你要找的......一起移動的機器人......
我不是神祕的downvoter,但這並沒有解決問題。它會將'variable'設置爲'someRandomFunction()'以獲得任何值,而不管它是否真實。另外,除非'someRandomFunction'有錯誤(在這種情況下它應該被修復,包裝或替換),否則很少有(理解爲'絕對不')理由期望在這裏拋出'NameError'。 – aaronasterling 2010-10-21 05:17:05
啊!我錯誤的問題是「如果_function_存在,則將函數的結果設置爲變量」,從而出現NameError錯誤。謝謝你的評論。我會很快刪除這個答案。 – 2010-10-21 05:22:12
也許有點不正統,但你可以修改someRandomFunction()
,以便在返回它之前將它的最後結果保存在一個函數屬性中,然後可以執行此操作。
def someRandomFunction():
...
someRandomFunction.result = <...>
return someRandomFunction.result
if someRandomFunction():
variable = someRandomFunction.result
我不認爲你的答案太冗長。它確切地說明了它的功能。不過,既然你已經說過這是你的口味太冗長我會選擇在
S = myFunc的()或someVariable
方法
爲什麼你不能只是做VAR = someFunc()然後檢查var爲None? – jbreed 2010-10-20 22:57:49
爲什麼你會**將變量undefined留下?你能給出什麼可能的原因? 'variable = someRandomFunction()'是有道理的。 if語句根本沒有意義。請提供一個原因,讓你留下一個未定義的變量! – 2010-10-20 22:58:28
@jawonlee:如果'someRandomFunction()'返回一個falsy值,推測'變量'應該不會改變。 – 2010-10-20 22:59:07