如果使用或者条件,则返回计算结果为FALSE的变量

时间:2015-12-03 12:22:01

标签: python

我想知道在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.

2 个答案:

答案 0 :(得分:4)

利用or运算符短路:

def foo(a, b):
    if a == 0 or b == 0:
       return a or b

如果ba,则返回0。请注意,如果ab都是0,则会返回0

如果您真的想要将这些值设为布尔,那么请使用Python bool类型值,FalseTrue

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')