Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl的Python版本=| |(=或)_Python - Fatal编程技术网

Perl的Python版本=| |(=或)

Perl的Python版本=| |(=或),python,Python,我似乎找不到python的表达方式 x = y or 1 在Perl中: $x = $y || 1; 在python中是否有一种很好的方法可以做到这一点?一种简单但没有那么好的方法: x = y if y else 1 x=y或1与: if y: x = y else: x = 1 这不是你想要做的吗?Python的或具有我认为你需要的语义。看见必须认识到,它返回的是输入值,而不是True或False y = 2 x = y if y else 1 # x == 2 y = N

我似乎找不到python的表达方式

x = y or 1
在Perl中:

$x = $y || 1;

在python中是否有一种很好的方法可以做到这一点?

一种简单但没有那么好的方法:

x = y if y else 1

x=y或1
与:

if y:
  x = y
else:
  x = 1

这不是你想要做的吗?

Python的
具有我认为你需要的语义。看见必须认识到,它返回的是输入值,而不是
True
False

y = 2
x = y if y else 1
# x == 2

y = None
x = y if y else 1
# x == 1
>>> "" or 12
12

>>> 27 or 9
27

>> None or "default"
'default'

这意味着
x=y或1
应该是您所追求的,
x
将是
y
如果
y
是非
False
,否则它将是
1
如果定义了y,所有提到的解决方案都将有效(可以是无)


如果未定义y,Python将抛出异常,而Perl代码将在非严格模式下工作。

什么不适用于
x=y或1
?我的程序失败了,看起来这是问题所在,但事实并非如此。x=y或1是正确的。谢谢大家!