2010-10-20 77 views
1

這看起來很冗長,特別是對於長函數名稱,有沒有更好的方法在Python中執行此操作?如果結果存在,則設置一個變量等於結果

if someRandomFunction(): 
    variable = someRandomFunction() 

編輯:更多上下文變量尚未定義,這將是一個樹的新節點。如果someRandomFunction()返回一個值,我只想創建這個節點。而someRandomFunction()應該從不同類型的樹中返回某個節點的字符串表示。

+0

爲什麼你不能只是做VAR = someFunc()然後檢查var爲None? – jbreed 2010-10-20 22:57:49

+2

爲什麼你會**將變量undefined留下?你能給出什麼可能的原因? 'variable = someRandomFunction()'是有道理的。 if語句根本沒有意義。請提供一個原因,讓你留下一個未定義的變量! – 2010-10-20 22:58:28

+1

@jawonlee:如果'someRandomFunction()'返回一個falsy值,推測'變量'應該不會改變。 – 2010-10-20 22:59:07

回答

13

莫非你:

variable = someRandomFunction() or variable 

Boolean Operations Python文檔中獲取更多信息。

+0

這就是我喜歡的解決方案。我認爲它讀得很好。 – kindall 2010-10-20 23:17:54

+3

這個問題並不清楚,在這行代碼執行之前是否定義了「變量」。如果'someRandomFunction()'評估爲False,則會引發NameError異常,因爲變量尚未定義。 – snapshoe 2010-10-21 03:55:36

+0

@ ma3204:我認爲我們必須假定它已經被定義了,因爲如果不是並且'someRandomFunction'返回false,那麼之後使用'variable'的任何代碼也會在原始代碼中產生一個'NameError'。 – 2010-10-21 04:44:21

6
temp= someRandomFunction() 
if temp: 
    variable = temp 
-1

(顯然,如果您還沒有註冊,你不能刪除你的答案。)

這些不是你要找的......一起移動的機器人......

+1

我不是神祕的downvoter,但這並沒有解決問題。它會將'variable'設置爲'someRandomFunction()'以獲得任何值,而不管它是否真實。另外,除非'someRandomFunction'有錯誤(在這種情況下它應該被修復,包裝或替換),否則很少有(理解爲'絕對不')理由期望在這裏拋出'NameError'。 – aaronasterling 2010-10-21 05:17:05

+0

啊!我錯誤的問題是「如果_function_存在,則將函數的結果設置爲變量」,從而出現NameError錯誤。謝謝你的評論。我會很快刪除這個答案。 – 2010-10-21 05:22:12

0

也許有點不正統,但你可以修改someRandomFunction(),以便在返回它之前將它的最後結果保存在一個函數屬性中,然後可以執行此操作。

def someRandomFunction(): 
    ... 
    someRandomFunction.result = <...> 
    return someRandomFunction.result 

if someRandomFunction(): 
    variable = someRandomFunction.result 
0

我不認爲你的答案太冗長。它確切地說明了它的功能。不過,既然你已經說過這是你的口味太冗長我會選擇在

S = myFunc的()或someVariable

方法