我想知道在if else
评估为FALSE
(或TRUE
)的def foo(a,b)
if a == 0 or b == 0:
# return b
else:
pass;
a = 0
b = 1
print(foo(a,b))
> 1
中返回变量的最pythonic(和最短)方式。
-module(echo).
-export([listen/1]).
-define(TCP_OPTIONS, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]).
listen(Port) ->
{ok, LSocket} = gen_tcp:listen(Port, ?TCP_OPTIONS),
accept(LSocket).
accept(LSocket) ->
{ok, Socket} = gen_tcp:accept(LSocket),
spawn(fun() -> loop(Socket) end),
accept(LSocket).
loop(Socket) ->
timer:sleep(10000),
P = inet:peername(Socket),
io:format("ok ~p~n", [P]),
case gen_tcp:recv(Socket, 0) of
{ok, Data} ->
gen_tcp:send(Socket, Data),
loop(Socket);
{error, closed} ->
ok;
E ->
io:format("bad ~p~n", [E])
end.
答案 0 :(得分:4)
利用or
运算符短路:
def foo(a, b):
if a == 0 or b == 0:
return a or b
如果b
为a
,则返回0
。请注意,如果a
和b
都是0
,则会返回0
。
如果您真的想要将这些值设为布尔,那么请使用Python bool
类型值,False
和True
:
def foo(a, b):
if not (a and b): # equivalent of "not a or not b"
return a or b
foo(False, True) # produces True
foo(True, True) # produces None
答案 1 :(得分:0)
也许我误解了这个问题,但不是这样做的尝试:
a = None
b = 123
c = a or b
print(c)
> 123
如果未设置非必需参数,则使用默认值初始化函数的参数的模式:
def func(a, b=None):
b = b or 'default_value'
print(a, b)
func('abc', 'b defined')
func('cde')