我不主張這是一種很好的風格,我只是好奇它爲什麼不起作用(無效的語法),我的搜索福是讓我失望。python返回語句在一個和門
def f(x):
x and return x
return 0
這樣做的工作在Perl中,例如:
sub f {
my $x = shift;
$x && return $x
return 0
}
我不主張這是一種很好的風格,我只是好奇它爲什麼不起作用(無效的語法),我的搜索福是讓我失望。python返回語句在一個和門
def f(x):
x and return x
return 0
這樣做的工作在Perl中,例如:
sub f {
my $x = shift;
$x && return $x
return 0
}
Python是用語句和表達式之間的區別的語言。
return
是一個語句,它不能用於需要表達式的地方。
與往常一樣,具有這種雙重性的語言的反面是相反有效的,因爲表達式可以被視爲語句(例如,您可以將foo()
寫爲語句)。
如果你喜歡一個襯片的代碼可以寫成
return x if x else 0
或者更簡單地說
return x or 0
因爲or
運算符返回第一個操作數是「truthy」不只是True
或False
(也是短路的,即如果左操作數是真的,則不評估右操作數)。
什麼你想在Python寫在這種情況下是:
def f(x):
return x if x else 0
或者:
def f(x):
return x or 0
你能改寫爲一個清晰的問題,而不是僅僅陳述? – JustinJDavies 2014-09-06 14:23:59