当前位置: 首页 > 知识库问答 >
问题:

案例/开关语句的Python等效项是什么?[重复]

鲁永福
2023-03-14

是否有类似于VB. NET或C#中提供的实例的Python等效语句?

共有2个答案

夔光霁
2023-03-14

直接替换为if/elif/else

然而,在许多情况下,在Python中有更好的方法。请参见“Python中开关语句的替换?”。

左丘弘致
2023-03-14

在Python3.10中,他们引入了模式匹配。

来自Python留档的示例:

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Something's wrong with the internet"

虽然官方留档很乐意不提供开关,但我已经看到了使用字典的解决方案。

例如:

# define the function blocks
def zero():
    print "You typed zero.\n"

def sqr():
    print "n is a perfect square\n"

def even():
    print "n is an even number\n"

def prime():
    print "n is a prime number\n"

# map the inputs to the function blocks
options = {0 : zero,
           1 : sqr,
           4 : sqr,
           9 : sqr,
           2 : even,
           3 : prime,
           5 : prime,
           7 : prime,
}

然后调用等效开关块:

options[num]()

如果你严重依赖于失败,那么它就会开始崩溃。

 类似资料:
  • 问题内容: 我想知道,是否有Python等效的case语句,例如VB.net或C#上可用的示例? 问题答案: 例如: 然后,调用等效的开关块: 如果你严重依赖失败,就会开始崩溃。

  • 问题内容: Python 3等效于什么? 问题答案: 从文档: 该模块已合并到Python 3.0中。将源转换为3.0时,2to3工具将自动适应导入。 因此,您的命令是,或者取决于您的安装,它可以是:

  • 问题内容: LINQ的Java等效项是什么? 问题答案: 现在使用Java 8向我们介绍了Stream API,这在处理集合时是类似的事情,但与Linq不太一样。 如果它是您正在寻找的ORM,例如Entity Framework,那么您可以尝试Hibernate

  • 问题内容: 请提出与Shell脚本等效的Python命令。 有没有办法打印/记录Python执行的每个源文件行? 问题答案: 您可以使用跟踪模块: 上面的命令行将在执行代码时显示每一行代码。

  • 问题内容: 有Swift的等效项吗?在中,我们通常使用: 如何在Swift中实现相同目标?我发现了一个功能: 但是,它很长,根本不方便。 问题答案: 将在斯威夫特的世界同样存在。 的,和参数均标有 该装置的同时调用该函数我们可以忽略这些参数的关键字。在这种情况下,将使用其默认值。 这得出一个结论,该方法调用可以简化为: Swift 5- 没什么变化,仍然可以这样工作。

  • 问题内容: 在Objective-C中,我使用以下代码删除所有子视图: 但是如何迅速使用它呢?我看到苹果文档迅速使用了该方法 但是当我尝试它时,出现错误: 有什么方法可以快速删除子视图? 问题答案: 已针对Swift 2.0(Xcode 7)更新 用途: 或像这样: