当前位置: 首页 > news >正文

杭州seo整站优化中山网站建设与设计

杭州seo整站优化,中山网站建设与设计,无锡企业网站的建设,怎么编辑wordpress主题代码在C语言中有switch...case语句#xff0c;Pthon3.10之前应该是没有类似语法#xff0c;从Python3.10开始引入match...case与switch分支语句用法类似#xff0c;但有细微差别#xff0c;总结如下#xff1a; 1.语法 肉眼可见的是关键词从switch变成了match#xff0c;同…在C语言中有switch...case语句Pthon3.10之前应该是没有类似语法从Python3.10开始引入match...case与switch分支语句用法类似但有细微差别总结如下 1.语法 肉眼可见的是关键词从switch变成了match同时match...case语句遵循Python语法风格如下 switch(condition) {case 1do_something_1();break;case 2:do_something_2();break;case 3:do_something_3();break;default:do_default(); } 以上是C语言中switch...case的语法需要注意case后面需要有break否则会继续执行下面的语句 match condition:case 1:do_something_1()case 2:do_something_2()case 3:do_something_3()case _:do_default() 以上是Python中match...case的语法没有break也没有default取而代之的是捕捉模式Capture比如本例中的case _: 与default功能类似表示其他值同时_相当于一个局部变量其值等于condition_也可以取其他变量名当然一个match语句中最多只能有一个捕捉模式的case且必须位于最后一个case就像只能有一个default一样 2.数据类型支持 C语言中的case后面只能是整形值Python的case后面可以是大部分数据类型对于不同数据类型的匹配规则列举如下 数值(int,float)  字符串(string) None使用等号规则进行匹配 n -1.2 match n:case 0: # 不匹配print(1)case 1: # 不匹配print(1)case 1.1: # 不匹配print(1.1)case 1.2: # 不匹配print(1.2)case -1.2: # 不匹配print(str -1.2)case -1.2: # 匹配且命中print(-1.2)case default: # 匹配但未命中因为前面case已经命中print(default str(default)) s 3 print(s num(3) ? str(s 3)) match s:case 1: # 不匹配print(1)case 3: # 不匹配print(3)case 3: # 匹配且命中print(str 3)case default: # 匹配但未命中因为前面case已经命中print(default default) n None match n:case 0: # 不匹配print(0)case : # 不匹配print()case False: # 不匹配print(False)case None: # 匹配且命中print(None)case default: # 匹配当未命中因为前面case已经命中print(default str(default)) 布尔值(Boolean)比较特殊True会匹配True和数字1False会匹配False和数字0 b True match b:case : # 不匹配print()case 0: # 不匹配print(0)case 11: # 不匹配print(11)case 1: # 匹配且命中print(1)case True: # 匹配但未命中因为前面case已经命中print(True)case False: # 不匹配print(False)case default: # 匹配但未命中因为前面case已经命中print(default str(default)) b False match b:case : # 不匹配print()case 0: # 匹配且命中print(0)case 11: # 不匹配print(11)case 1: # 不匹配print(1)case True: # 不匹配print(True)case False: # 匹配但未命中因为前面case已经命中print(False)case default: # 匹配但未命中因为前面case已经命中print(default str(default)) 字典(dictionary)当condition是个字典时case后面只要是字典且case后面字典的键值对在condition中都能找到则该case命中键值对无顺序要求有一个比较特殊情况假如case后面跟的是空字典那么不管condition字典内容是什么该case必然命中 a {ab:3, 5:5} match a:case 1: # 不匹配print(1)case {ab:2}: # 不匹配print(ab2)case {ab:1}: # 不匹配print(ab1)case {c:3}: # 不匹配print(c3)case {5:5, ab:3}: # 匹配且命中print(5:5 ab:3)case {ab:3, t:3}: # 不匹配print(ab3 t3)case {ab:3, 5:4}: # 不匹配print(ab3 5:4)case {ab:3, 5:5, t:2}: # 不匹配print(ab3 5:5 t2)case {ab:3, 5:5}: # 匹配但未命中因为前面case已经命中print(ab3 5:5)case {ab:3}: # 匹配但未命中因为前面case已经命中print(ab3)case {}: # 匹配但未命中因为前面case已经命中print({})case _b: # 匹配但未命中因为前面case已经命中print(_______ str(_b)) 列表 (list) 元组(tuple)当condition是个列表或元组时在做case比对时不分列表和元组只要元素数量相同且每个索引位置值相同即可匹配成功 l [2,3,4,5] match l:case 2: # 未匹配print(2)case 2,3: # 未匹配print(2,3)case 2,3,4,5,6: # 未匹配print(2,3,4,5,6)case [2,4,3,5]: # 未匹配print([2,4,3,5])case (2,4,3,5): # 未匹配print((2,4,3,5))case (2,3,4,5): # 匹配且命中print((2,3,4,5))case [2,3,4,5]: # 匹配但未命中因为已经命中了前面的caseprint([2,3,4,5])case default: # 匹配但未命中因为已经命中了前面的caseprint(default str(type(default)) str(default)) 集合(set)目前似乎还不支持集合数据类型的匹配不确定如有错误之处望留言指正 类(Class)首先判断是否属于同一个class然后判断calss各属性值是否相等 class Point:def __init__(self, x, y):self.x xself.y y class Point2:def __init__(self, x, y):self.x xself.y yobj Point(1,2) match obj:case Point(x3, y4): # 不匹配属性值不相等print(Point,3,4)case Point2(x1, y2): # 不匹配class类型不一致print(Point2,1,2)case {x:1, y:2}: # 不匹配Class类型不一致print({x,y})case Point(x1, y2): # 匹配且命中print(Point,1,2)case default:print(default str(default)) 3.组合case 在C语言中可以多个case对应一个执行过程如下所示 switch(condition) {case 1do_something_1();break;case 2:case 3:do_something_2_3();break;case 4:case 5:do_something_4_5();break;default:do_default(); } 当condition等于2或3时执行do_sometion_2_3()函数当condition等于4或5时执行do_something_4_5()函数 在Python中也有类似写法叫作组合(OR)模式如下所示 c 5 match c:case 1: # 不匹配print(1)case 1 | 2: # 不匹配print(1 | 2)case 3 | 4: # 不匹配print(3 | 4)case 5 | 6 | 7: # 匹配且命中print(5 | 6 | 7)case 5: # 匹配但未命中因为前面case已经命中print(5)case _: # 匹配但未命中因为前面case已经命中print(default str(_)) 4.通配符捕捉模式的扩展 当捕捉模式应用到列表和字典等复杂数据类型时情况会比较复杂我们通过几个例子来进行说明 d [1,2,3,4] match d:case a,b: # 不匹配元素数量不等print(a,b)print([a,b])case a,b,c: # 不匹配元素数量不等print(a,b,c)print([a,b,c,d])case 2,*b: # 不匹配索引位值不相等其中*b代表任意个元素print(2,*b)print(b)case 1,*b,3: # 不匹配索引位值不相等print(1,*b,3)print(b)case *b,2: # 不匹配索引位值不相等print(*b,2)print(b)case 1,2,3,*b,4: # 匹配且命中print(1,2,3,*b,4)print(b) // b []case 1,*b,4: # 匹配但未命中因为前面case已命中print(1,*b,4)print(b)case *b,4: # 匹配但未命中因为前面case已命中print(*b,4)print(b)case 1,*b: # 匹配但未命中因为前面case已命中print(1,*b)print(b)case *b,: # 匹配但未命中因为前面case已命中print(*b,)print(b)case [*b]: # 匹配但未命中因为前面case已命中print([*b])print(b)case 2,b,c,d: # 不匹配索引位值不相等print(2,b,c,d)print([2,b,c,d])case 1,2,c,d: # 匹配但未命中因为前面case已命中print(1,2,c,d)print([1,2,c,d])case 1,b,c,d: # 匹配但未命中因为前面case已命中print(1,b,c,d)print([1,b,c,d])case a,b,c,d: # 匹配但未命中因为前面case已命中print(a,b,c,d)print([a,b,c,d])case _: # 匹配但未命中因为前面case已命中print(_) 本例中的a,b,c,d为捕捉模式在列表中的应用而*b为通配符表示匹配任意个元素包括0个元素且一个case中只能有一个通配符变量 类似地捕捉模式和通配符还可以应用到字典数据类型如下 d {a:1, b:bb, c: [3,4], d: {dd:5}} match d:case {s: 1}: # 不匹配print(s:1)case {a:a}: # 匹配且命中print(a:a)print(a) # a1case {b:bbb}: # 匹配但未命中因为前面case已经命中print(b:bbb)print(bbb) # bbb bbcase {a:1, **p}: # 匹配但未命中因为前面case已经命中print(a:1:**p)print(p) # p {b:bb, c: [3,4], d: {dd:5}}case {**p}: # 匹配但未命中因为前面case已经命中print(**p)print(p) # p {a:1, b:bb, c: [3,4], d: {dd:5}}case {d:d, **p}: # 匹配但未命中因为前面case已经命中print(d:d:**p)print(p) # p {a:1, b:bb, c: [3,4]}case _: # 匹配但未命中因为前面case已经命中print(default str(default)) # default d {a:1, b:bb, c: [3,4], d: {dd:5}} 倘若要将捕捉模式和通配符用于自定义类需要给自定义类定义一个__match_args__数组如下 class Point:__match_args__ (x, y)def __init__(self, x, y):self.x xself.y y 或者使用标准库的dataclasses.dataclass装饰器它会提供__match_args__属性如下 from dataclasses import dataclassdataclass class Point2:x: inty: int 这样就可以使用捕捉模式如下 class Point:__match_args__ (x, y)def __init__(self, x, y):self.x xself.y yfrom dataclasses import dataclassdataclass class Point2:x: inty: intobj Point2(1,2) match obj:case Point(x, y): # 不匹配Class类型不一致print(fPoint({x},{y}))case Point2(x, y): # 匹配且命中print(fPoint2({x},{y}))case Point(x3, y4): # 不匹配Class类型不一致print(Point,3,4)case Point2(x1, y2): # 匹配但未命中因为前面case已经命中print(Point2,1,2)case {x:1, y:2}: # 不匹配Class类型不一致print({x,y})case Point(x1, y2): # 不匹配Class类型不一致print(Point,1,2)case default:# 匹配但未命中因为前面case已经命中print(default str(default)) 5.数据类型匹配 简单来说就是只根据数据类型来判断是否匹配如下 a {1,2,3} match a:# case object():# print(object)case int(): # 不匹配print(int)case str(): # 不匹配print(str)case list(): # 不匹配print(list)case tuple(): # 不匹配print(tuple)case dict(): # 不匹配print(dict)case set(): # 匹配命中print(set)case bool(): # 不匹配print(bool)case default:print(default str(type(default)) str(default)) 需要注意的是True和False会匹配int()和bool()所有值都会匹配object 6.AS语法 简单来说就是当匹配某个case时将匹配到的值存入用as语句声明的新变量中通常和数据类型匹配相结合使用如下 a [1,2,3,4] match a:case {b: bb} as v: # 不匹配print(b:bb:v)print(bb)print(v)case [1, *b, int() as v]: # 不匹配print([1, *b]:int,v)print(b)print(v)case [1, *b, str() as v]: # 匹配命中print([1, *b]:str,v)print(b) # b [2,3]print(v) # v 4case _:print(default str(type(default)) str(default)) 7.补充条件模式 可以在case后面使用if语句来添加匹配的判断条件如下 a [3, 4, 5, 6] match a:case [a, *b, c] if a10: # 不匹配a不大于10print(a10)print(c str(c))case [a, *b, c] if a5: # 不匹配print(10a5)print(c str(c))case [a, *b, c] if a0: # 匹配print(5a0)print(c str(c)) # c 6case [a, *b, c] if a0: # 不匹配print(a0)print(c str(c))case _:print(a0) 再比如 cmd [go, away] match cmd:case [go, dir] if dir in [east, west]: # 不匹配print(go- dir)case [go, dir] if dir north or dir south: # 不匹配print(stop)case [go, dir]: # 匹配命中print(unknown dir: dir)case _:print(default)
http://www.dnsts.com.cn/news/130638.html

相关文章:

  • 开原网站制作公司重庆网站推广网络推广
  • 微网站微网站WordPress整合phpems
  • 酒泉网站建设培训福田欧曼官网
  • wordpress站点主页医院网站建设规范
  • 大连新图闻网站设计网站模板源代码下载
  • 如何让百度不收录网站网站域名包括哪些
  • 快站app下载网站建设策划书5000字
  • 常州的网站建设公司注册地址变更需要多久
  • joomla 做外贸网站 好的自建个人网站
  • asp.net 手机网站开发wordpress汉字注册
  • 只做网站可以在百度里收到吗wordpress修改编辑器
  • 手机网站自动适配静态网站制作视频
  • 如何制作门户网站用wordpress建站一个人可以吗
  • 微博推广报价百度快照优化seo
  • 那里可以建设网站网站建设哪个
  • 怎么重启网站服务器网站建设a云世家宋南南
  • 如何做网站家具导购开封市城乡建设局网站
  • 网站建设注意要点店铺推广引流
  • 购物网站建设目标计算机网络技术就业方向有哪些
  • 企业建设网站的功能是什么wordpress获取用户注册时间
  • 合肥平台网站建设网页制作相关网站
  • html仿百度页面代码海南快速seo排名优化
  • 古色古香 网站模板wordpress网站微信登录
  • 学习网站建设需要什么长沙公司网站制作
  • 鞍山网站建设鞍山联系人网站设计
  • 泰州住房和城乡建设网站易语言做网站客户端
  • 山东住房和建设厅网站首页网站中文域名怎么做
  • qq教程网站源码wordpress 优化 插件
  • 加快信用网站建设虚拟主机怎么弄网站
  • 免费文档模板网站网站方案策划书18000字