2014-01-12 44 views
1

当检查非y变量时,三元组很容易使用。三元函数可以返回并在python中打印吗?

>>> x = None 
>>> y = 2 if x else 3 
>>> y 
3 

如果我想检查无-两者均我回来之前是有一个三元等价于:

def foobar(x): 
    if x: 
    return x*x 
    else: 
    print 'x is None-y' 

有什么,看起来像:

def foobar(x): 
    return x*x if x else print 'x is None-y' 
+2

不要做,在实际程序。 Python不是Ruby。 :-) – Kos

回答

2

使用print的功能,从__future__它导入Python2:

>>> from __future__ import print_function 
>>> def foobar(x): 
     return x*x if x else print ('x is None-y') 
... 
>>> foobar(0) 
x is None-y 
>>> foobar(2) 
4 

另一种选择将是使用sys.stdout

>>> import sys 
>>> def foobar(x): 
     return x*x if x else sys.stdout.write('x is None-y\n') 
... 
>>> foobar(0) 
x is None-y 
>>> foobar(2) 
4 
+0

ahhhh'__future__'黑魔法=) – alvas

+0

赦免编辑,foobar(2)是一个更好的例子。 – alvas

1

在Python 2 ,print是一个语句,不能在条件表达式中使用。

在Python 3中,print是一个函数,因此可以像这样使用(带圆括号)。然而,我认为这是不好的风格,因为print()被称为副作用而不是返回值。

我会坚持使用原始的if(为了清楚起见,可能会在else上添加明确的return)。

最后,您的代码声称0None -y,在这种情况下有点奇怪。