繁体   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