2010-07-28 63 views
4

的可變分配順序有沒有辦法做到在Python中的函數調用內部的變量賦值?像Python的操作

curr= [] 
curr.append(num = num/2) 

回答

4

我敢肯定我記得Python中創建的原因之一是爲了避免這些可憎的事,而不是寧願可讀性超過本來聰明:-)

什麼,請告訴的東西,是錯誤的下列?

curr= [] 
num = num/2 
curr.append(num) 
+0

嗯,我明白你的意思,但我不明白爲什麼'cur.append(NUM = NUM​​/2)'比像'[X有效範圍內(1000,9999)X的可讀性如果沒有[噸噸範圍內(2,x)如果不是X%T]]' – Falmarri 2010-07-28 05:25:59

+1

我不使用這些那些要麼:-)我更你的「經典」的Python用戶。 – paxdiablo 2010-07-28 05:45:20

0

即使可以,副作用表達式是使代碼不可讀取的好方法,但不能... Python會將其解釋爲關鍵字參數。最接近你可以得到的是:

class Assigner(object): 
    def __init__(self, value): 
     self.value = value 
    def assign(self, newvalue): 
     self.value = newvalue 
     return self.value 

# ... 
num = Assigner(2) 
curr = [] 
curr.append(num.assign(num.value/2)) 
+0

爲什麼祈禱告訴你,你甚至會想到上述情況。 ;) – msw 2010-07-28 04:30:01

+1

@msw,有時一個人的轉錄「參考算法」從C到Python中,例如,並且在這樣的轉錄停留儘可能靠近C代碼作爲可行的結構的第一階段是一個好主意(一個refactors _later_使代碼體面的Python,更快等,_after_之一有一個可行的Python參考算法實現)。略有不同,但不顯着的話,類似的考慮,可以使用Python來原型後轉錄代碼爲C適用:C中的結構原型越近,越容易轉錄會。 – 2010-07-28 04:37:59

+1

@alex,首先,請注意閃閃笑臉')',然後記詞法並行性paxdiablo的回答的第二句。然後請注意,Safyan先生的回答是「因爲我可以,但實際上沒有」,以及它如何不接近類似的類似C的表達。比照http://en.wiktionary.org/wiki/levity – msw 2010-07-28 04:57:23