2010-10-20 41 views
1

这看起来很冗长,特别是对于长函数名称,有没有更好的方法在Python中执行此操作?如果结果存在,则设置一个变量等于结果

if someRandomFunction(): 
    variable = someRandomFunction() 

编辑:更多上下文变量尚未定义,这将是一个树的新节点。如果someRandomFunction()返回一个值,我只想创建这个节点。而someRandomFunction()应该从不同类型的树中返回某个节点的字符串表示。

+0

为什么你不能只是做VAR = someFunc()然后检查var为None? – jbreed 2010-10-20 22:57:49

+2

为什么你会**将变量undefined留下?你能给出什么可能的原因? 'variable = someRandomFunction()'是有道理的。 if语句根本没有意义。请提供一个原因,让你留下一个未定义的变量! – 2010-10-20 22:58:28

+1

@jawonlee:如果'someRandomFunction()'返回一个falsy值,推测'变量'应该不会改变。 – 2010-10-20 22:59:07

回答

13

莫非你:

variable = someRandomFunction() or variable 

Boolean Operations Python文档中获取更多信息。

+0

这就是我喜欢的解决方案。我认为它读得很好。 – kindall 2010-10-20 23:17:54

+3

这个问题并不清楚,在这行代码执行之前是否定义了“变量”。如果'someRandomFunction()'评估为False,则会引发NameError异常,因为变量尚未定义。 – snapshoe 2010-10-21 03:55:36

+0

@ ma3204:我认为我们必须假定它已经被定义了,因为如果不是并且'someRandomFunction'返回false,那么之后使用'variable'的任何代码也会在原始代码中产生一个'NameError'。 – 2010-10-21 04:44:21

6
temp= someRandomFunction() 
if temp: 
    variable = temp 
-1

(显然,如果您还没有注册,你不能删除你的答案。)

这些不是你要找的......一起移动的机器人......

+1

我不是神秘的downvoter,但这并没有解决问题。它会将'variable'设置为'someRandomFunction()'以获得任何值,而不管它是否真实。另外,除非'someRandomFunction'有错误(在这种情况下它应该被修复,包装或替换),否则很少有(理解为'绝对不')理由期望在这里抛出'NameError'。 – aaronasterling 2010-10-21 05:17:05

+0

啊!我错误的问题是“如果_function_存在,则将函数的结果设置为变量”,从而出现NameError错误。谢谢你的评论。我会很快删除这个答案。 – 2010-10-21 05:22:12

0

也许有点不正统,但你可以修改someRandomFunction(),以便在返回它之前将它的最后结果保存在一个函数属性中,然后可以执行此操作。

def someRandomFunction(): 
    ... 
    someRandomFunction.result = <...> 
    return someRandomFunction.result 

if someRandomFunction(): 
    variable = someRandomFunction.result 
0

我不认为你的答案太冗长。它确切地说明了它的功能。不过,既然你已经说过这是你的口味太冗长我会选择在

S = myFunc的()或someVariable

方法

相关问题