簡體   English   中英

Python在使用值兩次時避免使用變量?

[英]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。

  1. 請不要使用默認字典。 如果我正在讀你的代碼,我可能不知道你知道什么,這個詞沒有關鍵詞。 有人可能會在以后更新代碼並違反該默認假設,代碼將中斷。
  2. 請不要使用“set_and_return”功能。 您的代碼可能很聰明,但可讀性較差。 更多行,更難以遵循,函數查找與dict查找相同。
  3. @gnibbler有一個很好的“更少的代碼行”解決方案,但我不建議它和閱讀很多python源我很少看到語法(更多在函數的開頭比其他任何地方)

我很欣賞它是如何在javascript中發生的,但是對於可接受的方式:我投票支持您的原始格式,最容易閱讀和理解,並且沒有比任何其他解決方案更慢或更低效。

tmp = myfunc()
mydict[mykey] = tmp
return tmp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM