python:通过 if/elif 语句传递一个值

标签 python if-statement

<分区>

我有一个函数可以返回三个值之一:a、b 或 c。

def f():
    return x # a, b, or c

我需要根据 f() 的返回值执行不同的语句:A、B 或 C。据我所知,执行此操作的最佳方法是:

v = f()
if v == a:
    # Do A
elif v == b:
    # Do B
else:
    # Do C

在不引入这个新变量v的情况下,是否有不同的方法来评估f()的返回值?
也许是这样的?

if f() == a:
    # Do A
elif _value_from_above == b:
    # Do B
else:
    # Do C

最佳答案

可能不是您想要的,但一种选择是使用函数字典:

def do_a();
    ..
def do_b();
    ..
def do_c();
    ..

strategy = {
    a: do_a,
    b: do_b
    c: do_c
}

strategy[f()]()

但通常情况下,如果找不到字典条目,您会希望进行一些错误处理,在这种情况下,您很可能最终会得到一个单独的变量,而且您现在必须将每个案例提取到它自己的函数中。

也许更不相关,如果只有两种情况你可以使用三元运算符:

do_a() if f() == a else do_b()

虽然您可能已经知道这一点,而且您的问题有两种以上的情况,而且很多人不喜欢三元运算符,但无论如何。

如果你有一种带有 switch 语句的语言,如 C#/Java/C++ 等,或模式匹配语句,如任何 Haskell/OCaml/F#/Scala/Erlang 等,那么你可以使用它们。模式匹配语句如下所示:

match f() with
| a ->
    // do something
    // and maybe something else too
| b ->
    // do some other thing
    // and yet some other thing

但是Python中没有这样的特性。

关于python:通过 if/elif 语句传递一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47839194/

相关文章:

python - 多处理具有多个输入的函数

python - 对百分比列表进行排序

javascript - Ghost.py 0.2.3 超时错误 : Unable to load requested page

javascript - 设置变量时,Angular Js ng-init 在 ng-repeat 内无法正常工作

创建一个循环来切换值并存储新值以供进一步计算

python - 与 Tkinter 跟踪关联的回调函数有哪些限制?

python - python中离散点(LDDP)的限制密度

if-statement - FASM - x64 与 x86

php - 改善 elseif 条件

MySQL 查询 - 如果单元格为空,则