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