在Perl中,能够分配对象通常很好,但如果从中分配的变量是'undef',则指定一些回退值.例如:
my $x = undef;
my $y = 2;
my $a = $x || $y;
Run Code Online (Sandbox Code Playgroud)
在这之后,
$a == 2
Run Code Online (Sandbox Code Playgroud)
有没有一种简洁的方法可以在Python中实现这一点,如果值x是None,或者是全开...
if x is not None
a = x
else
a = y
Run Code Online (Sandbox Code Playgroud)
...成为实现这一目标的最恐怖的方式?
编辑:道歉,正如几位评论者所指出的那样,我并没有真正谈论价值未定义,而是Perl中的'undef',这实际上并不是一回事.但最初措辞的问题并没有说清楚.
var*_*tec 36
从2.5开始:
如果你想只回到无:
a = x if x is not None else y
Run Code Online (Sandbox Code Playgroud)
如果你想回落空字符串false,0等:
a = x if x else y
Run Code Online (Sandbox Code Playgroud)
要么
a = x or y
Run Code Online (Sandbox Code Playgroud)
至于undefined(从未定义,也称为未绑定):
try:
a = x
except NameError:
a = y
Run Code Online (Sandbox Code Playgroud)
或更多的hackish(我不是真的建议,但它很短):
a = vars().get('x',y)
Run Code Online (Sandbox Code Playgroud)
首先,你可以用三元组完成全部工作:
a = y if x is None else x
Run Code Online (Sandbox Code Playgroud)
但它并没有解决你的问题.您想要做的是更紧密地实施:
try:
a = x
except:
a = y
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |