[英]Python avoiding using a variable when using a value twice?
我目前有:
tmp = myfunc()
mydict[mykey] = tmp
return tmp
..這似乎有點太長了。 在javascript中,我可以這樣做:
return (mydict[mykey] = myfunc())
上面的Python代碼是可以接受的方式,還是還有別的東西?
編輯:我知道做的可能性:
mydict[mykey] = myfunc()
return mydict[mykey]
..但我不想做兩次密鑰查找。 除非
tmp = mydict[mykey] = myfunc()
return tmp
如果你想要更少的代碼行,你可以這樣做:
mydict[mykey] = myfunc()
return mydict[mykey]
但是,賦值不是Python中的表達式,因此您無法執行javascript版本。
編輯:如果你知道密鑰不在字典中,你可以這樣做:
return mydict.setdefault(mykey, myfunc())
setdefault
是一個查找函數,如果鍵不在字典中,則將鍵設置為第二個值。
你也可以寫一個輔助函數:
def set_and_return(d, k, v):
d[k] = v
return v
然后,在其他地方,你可以這樣做:
return set_and_return(mydict, mykey, myfunc())
意見各不相同,但這是我的$ .02。
@gnibbler
有一個很好的“更少的代碼行”解決方案,但我不建議它和閱讀很多python源我很少看到語法(更多在函數的開頭比其他任何地方) 我很欣賞它是如何在javascript中發生的,但是對於可接受的方式:我投票支持您的原始格式,最容易閱讀和理解,並且沒有比任何其他解決方案更慢或更低效。
tmp = myfunc()
mydict[mykey] = tmp
return tmp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.