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