三元可以在python中使用return和print吗?
在检查非y变量时,三元易于使用三元可以在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
>>> 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.:-)