python中swith-case,python的case写法

这篇具有很好参考价值的文章主要介绍了python中swith-case,python的case写法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,小编来为大家解答以下问题,python中swith-case,python的case写法,今天让我们一起来看看吧!

python case,python,开发语言

方式一

Python 3.10版本 更新了类似其他语言的switch case结构,所以最好的方法是直接更新到python3.10,直接使用match case 语句:

C语言:
switch (expression) {
    case constant-expression :
       statement(s);
       break; /* 可选的 */
    case constant-expression :
       statement(s);
       break; /* 可选的 */
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}
Python:
flag = False
match (100, 200):
   case (100, 300):  # Mismatch: 200 != 300
       print('Case 1')
   case (100, 200) if flag:  # Successful match, but guard fails
       print('Case 2')
   case (100, y):  # Matches and binds y to 200
       print(f'Case 3, y: {y}')
   case _:  # Pattern not attempted
       print('Case 4, I match anything!')
#PEP 634: Structural Pattern Matching
match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

更详细的介绍:
【Python】Python 3.10 新特性之 match case语句_python match case_AiFool的博客-CSDN博客

方式二

使用函数实现类似switch case的效果:

def switch_case(value):
    switcher = {
        0: "zero",
        1: "one",
        2: "two",
    }
     
    return switcher.get(value, 'wrong value')

使用匿名函数方式实现:

def foo(var,x):
	return {
			'a': lambda x: x+1,
			'b': lambda x: x+2,
			'c': lambda x: x+3,	
	}[var](x)

方式三

自定义switch case类:

# This class provides the functionality we want. You only need to look at
# this if you want to know how this works. It only needs to be defined
# once, no need to muck around with its internals.
class switch(object):
	def __init__(self, value):
    	self.value = value
    	self.fall = False

	def __iter__(self):
    	"""Return the match method once, then stop"""
    	yield self.match
    	raise StopIteration

    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args: # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False


# The following example is pretty much the exact use-case of a dictionary,
# but is included for its simplicity. Note that you can include statements
# in each suite.
v = 'ten'
for case in switch(v):
    if case('one'):
        print 1
        break
    if case('two'):
        print 2
        break
    if case('ten'):
        print 10
        break
    if case('eleven'):
        print 11
        break
    if case(): # default, could also just omit condition or 'if True'
        print "something else!"
        # No need to break here, it'll stop anyway

# break is used here to look as much like the real thing as possible, but
# elif is generally just as good and more concise.

# Empty suites are considered syntax errors, so intentional fall-throughs
# should contain 'pass'
c = 'z'
for case in switch(c):
    if case('a'): pass # only necessary if the rest of the suite is empty
    if case('b'): pass
    # ...
    if case('y'): pass
    if case('z'):
        print "c is lowercase!"
        break
    if case('A'): pass
    # ...
    if case('Z'):
        print "c is uppercase!"
        break
    if case(): # default
        print "I dunno what c was!"

# As suggested by Pierre Quentel, you can even expand upon the
# functionality of the classic 'case' statement by matching multiple
# cases in a single shot. This greatly benefits operations such as the
# uppercase/lowercase example above:
import string
c = 'A'
for case in switch(c):
    if case(*string.lowercase): # note the * for unpacking as arguments
        print "c is lowercase!"
        break
    if case(*string.uppercase):
        print "c is uppercase!"
        break
    if case('!', '?', '.'): # normal argument passing style also applies
        print "c is a sentence terminator!"
        break
    if case(): # default
        print "I dunno what c was!"

# Since Pierre's suggestion is backward-compatible with the original recipe,
# I have made the necessary modification to allow for the above usage.

参考:https://www.cnblogs.com/gerrydeng/p/7191927.html文章来源地址https://www.toymoban.com/news/detail-826290.html

方式一

Python 3.10版本 更新了类似其他语言的switch case结构,所以最好的方法是直接更新到python3.10,直接使用match case 语句:

C语言:
switch (expression) {
    case constant-expression :
       statement(s);
       break; /* 可选的 */
    case constant-expression :
       statement(s);
       break; /* 可选的 */
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}
Python:
flag = False
match (100, 200):
   case (100, 300):  # Mismatch: 200 != 300
       print('Case 1')
   case (100, 200) if flag:  # Successful match, but guard fails
       print('Case 2')
   case (100, y):  # Matches and binds y to 200
       print(f'Case 3, y: {y}')
   case _:  # Pattern not attempted
       print('Case 4, I match anything!')
#PEP 634: Structural Pattern Matching
match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

更详细的介绍:
【Python】Python 3.10 新特性之 match case语句_python match case_AiFool的博客-CSDN博客

方式二

使用函数实现类似switch case的效果:

def switch_case(value):
    switcher = {
        0: "zero",
        1: "one",
        2: "two",
    }
     
    return switcher.get(value, 'wrong value')

使用匿名函数方式实现:

def foo(var,x):
	return {
			'a': lambda x: x+1,
			'b': lambda x: x+2,
			'c': lambda x: x+3,	
	}[var](x)

方式三

自定义switch case类:

# This class provides the functionality we want. You only need to look at
# this if you want to know how this works. It only needs to be defined
# once, no need to muck around with its internals.
class switch(object):
	def __init__(self, value):
    	self.value = value
    	self.fall = False

	def __iter__(self):
    	"""Return the match method once, then stop"""
    	yield self.match
    	raise StopIteration

    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args: # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False


# The following example is pretty much the exact use-case of a dictionary,
# but is included for its simplicity. Note that you can include statements
# in each suite.
v = 'ten'
for case in switch(v):
    if case('one'):
        print 1
        break
    if case('two'):
        print 2
        break
    if case('ten'):
        print 10
        break
    if case('eleven'):
        print 11
        break
    if case(): # default, could also just omit condition or 'if True'
        print "something else!"
        # No need to break here, it'll stop anyway

# break is used here to look as much like the real thing as possible, but
# elif is generally just as good and more concise.

# Empty suites are considered syntax errors, so intentional fall-throughs
# should contain 'pass'
c = 'z'
for case in switch(c):
    if case('a'): pass # only necessary if the rest of the suite is empty
    if case('b'): pass
    # ...
    if case('y'): pass
    if case('z'):
        print "c is lowercase!"
        break
    if case('A'): pass
    # ...
    if case('Z'):
        print "c is uppercase!"
        break
    if case(): # default
        print "I dunno what c was!"

# As suggested by Pierre Quentel, you can even expand upon the
# functionality of the classic 'case' statement by matching multiple
# cases in a single shot. This greatly benefits operations such as the
# uppercase/lowercase example above:
import string
c = 'A'
for case in switch(c):
    if case(*string.lowercase): # note the * for unpacking as arguments
        print "c is lowercase!"
        break
    if case(*string.uppercase):
        print "c is uppercase!"
        break
    if case('!', '?', '.'): # normal argument passing style also applies
        print "c is a sentence terminator!"
        break
    if case(): # default
        print "I dunno what c was!"

# Since Pierre's suggestion is backward-compatible with the original recipe,
# I have made the necessary modification to allow for the above usage.

参考:https://www.cnblogs.com/gerrydeng/p/7191927.html

到了这里,关于python中swith-case,python的case写法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kettle开发-Day40-AI分流之case/switch

            前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在数据流将类似空数据、不想要的数据

    2024年02月15日
    浏览(33)
  • 从ARM V7汇编层分析 if else和swith 语句效率

            if else和swith case是两种常用的分支选择结构,从C语言的角度来看,代码是顺序执行的,很难判断两者的效率孰高孰低。可以确定的是,swith语句只能处理整形变量,而if else语句可以处理更复杂的条件分支。当条件变量为单一的整形值的判断时,两者是可以互相替代的

    2024年03月22日
    浏览(46)
  • Python Switch 语句——Switch Case 示例

    在 3.10 版本之前,Python 从来没有实现 switch 语句在其他编程语言中所做的功能。 所以,如果你想执行多个条件语句,你将不得不使用elif这样的: 从 3.10 版本开始,Python 实现了一个称为“结构模式匹配”的 switch case 特性。您可以使用match和case来实现此功能。 有

    2024年02月12日
    浏览(53)
  • 求三个数最大值 C语言五种写法

    一、if嵌套语句       注意大于号和小于号。       if(表达式) 语句 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。       第二种形式为: if-else if(表达式)      语句1; else      语句2; 其语义是:如果表达式的值为真,则执行语句1,否则执行语

    2024年02月02日
    浏览(41)
  • python的命令行写法

    转自个人博客:python的命令行写法 - Tron \\\' blog python自带模块sys有一个获取命令行参数的功能 argv为从命令行获取的被当做一个可以迭代的属性 argv[0]为当前执行python的文件名,向依次递增 高级命令行写法: argparse demo1: 上述例子为获取-v参数 如果-v参数不存在,则打印出Fals

    2023年04月26日
    浏览(63)
  • python装13的一些写法

    1. any(** in ** for ** in **) 判断某个集合元素,是否包含某个/某些元素 代码: 输出结果 2. SQL装13的一些写法-CSDN博客

    2024年02月07日
    浏览(56)
  • 原生app与uniapp开发的H5交互,H5写法

    一、h5调用原生app方法         1、先判断是安卓系统还是ios系统         2、调用原生app方法     toAppLogin 为调用原生app的方法                 1)   ios环境:window.webkit.messageHandlers.toAppLogin.postMessage();                 2)安卓环境:window.android.toAppLogin(); 二、原

    2024年01月21日
    浏览(45)
  • 6.php开发-个人博客项目&Tp框架&路由访问&安全写法&历史漏洞

    目录 知识点 php框架——TP URL访问 Index.php-放在控制器目录下 ​编辑 Test.php--要继承一下 带参数的—————— 加入数据库代码 --不过滤 --自己写过滤 --手册(官方)的过滤 用TP框架找漏洞: 如何判断网站是thinkphp? 黑盒: 白盒: php总结 ​ 1-基于TP框架入门安装搭建使用

    2024年01月25日
    浏览(57)
  • 前端开发攻略---JS将class转换为function。满分写法无死角

    \\\'use strict\\\' : class中的代码全部都是在一个 严格模式 下,对于一些不安全的操作会抛出错误,使代码更加规范。 function Example(name) { ... } : 这是一个函数声明,函数名为  Example ,它接受一个参数  name 。这个函数充当了类的构造函数的角色。 函数名与class名相同 。 if (!new.targ

    2024年04月16日
    浏览(36)
  • C语言三个数字比大小详细写法合集比细狗还细(12种方法还不够你用吗)

    大家好我是内向的代码。 使用软件devc++ 以下都是小编我个人总结的一些常见以及不常见的 找最大值以及最小值 希望各位读者不要吝啬自己的赞点击关注是小编坚持更新的动力!在此谢谢大家了。 不好意思啊大家我一直没更新居然没有发现我之前有错误现已经更正还望各位

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包