三元可以在python中使用return和print吗?

三元可以在python中使用return和print吗?,python,if-statement,return,function,ternary,Python,If Statement,Return,Function,Ternary,在检查非y变量时,三元易于使用 >>> 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' 在Py

在检查非y变量时,三元易于使用

>>> 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'

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

在Python3中,
print
是一个函数,因此可以这样使用(带括号)。然而,我认为这是一种糟糕的风格,因为调用
print()
是因为它的副作用,而不是返回值

如果,我会坚持使用原始的
(为了清晰起见,可能会在
else
中添加一个显式的
返回


最后,您的代码声明
0
None
-y,这在上下文中有点奇怪。

使用
print
作为函数,从Python2中的
\uuuuuuuuuuuuuu
导入它:

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

不要在真实的程序中这样做。Python不是Ruby.:-)