根据这个页面,一个不能使用代码
if variable = something(): #do something with variable, whose value is the result of something() and is true
所以如果我想拥有以下代码结构:
if a = something(): #do something with a elif a = somethingelse(): #... #5 more elifs
其中something()函数是计算密集型的(我的意思是使用该函数然后再次执行它以便在第一个函数为true的情况下为变量赋值),我应该在Python中编写什么?再添加7个变量而不是1个?
几年前我在2001年遇到过这个问题 - 因为我从C语言中使用赋值和测试的参考算法音译到Python,我很想为第一个草稿保留一个类似的结构(然后重构一次)正确性得到了很好的测试).所以我写了一个配方的食谱(见这里),它归结为...:
class DataHolder(object): def set(self, value): self.value = value; return value
所以if
/ elif
树可以变成:
dh = DataHolder() if dh.set(something()): # do something with dh.value elif dh.set(somethingelse()): # ...
这个DataHolder
课程可以用各种方式进行装饰(在网上和书籍版本中都有所体现),但这是它的要点,足以回答你的问题.