概述
match-case是python3.10+的新特性,可以理解为python中的switch-case。如果你想要使用它,请注明所需python>=3.10.
基本语法和语义
match <表达式>:
case <值1>:
<语句块1>
case <值2> | <值3> | <值4> :
<语句块2>
case _:
<语句块3>
- 语义:计算表达式的值,依次匹配case后的值,一旦匹配到,就执行对应的语句块1次,语句结束;
- 如果所有case都匹配不上的就执行case _:对应的语句块,语句结束。
- case后必须跟“字面值”,也就是说,不能是表达式。
example1
# match-case的基本例子
color = input("请输入需要查询的颜色:")
match color:
case "red" | "红" | "红色":
r, g, b = 255, 0, 0
case "green" | "绿" | "绿色":
r, g, b = 0, 255, 0
case "yellow" | "黄" | "黄色":
r, g, b = 255, 255, 0
case _:
r, g, b = -1, -1, -1
if r >= 0:
print(f"{color}的颜色代码:#{r:02X}{g:02X}{b:02X}")
else:
print(f"查询不到{color}的颜色代码!")
example2
# 今天是星期几
from datetime import datetime
match datetime.today().weekday():
case 0:
print("今天是星期一")
case 3:
print("疯狂星期四!")
case 4:
print("加油,周末就到了!")
case 5 | 6:
print("周末愉快!")
case _:
print("普普通通的工作日")
进阶用法
如果在case写变量名
- 不是你想象的那样匹配变量的值
case <名字>
的含义是“捕捉”匹配不到的值
p = eval(input("请输入坐标(x,y):"))
match p:
case (0, 0):
print(f"{p}是原点")
case (0, y):
print(f"{p}在Y轴上,距离原点{abs(y)}")
case (x, 0):
print(f"{p}在X轴上,距离原点{abs(x)}")
case (x, y):
print(f"{p}距离原点{abs(x+y*1j)}")
只是为了不写if语句么?
- 引入了match-case语句,我们得到一个C语言里switch语句的等价物
- 可是只是为了把elif语句改一种形式?
- 甚至丢掉了elif判断条件的灵活性
from datetime import datetime
if (w := datetime.today().weekday()) == 0:
print("今天是星期一")
elif w == 3:
print("疯狂星期四!")
elif w == 4:
print("加油,周末就到了!")
elif w in (5, 6):
print("周末愉快!")
else:
print("普普通通的工作日")
原文地址:http://www.cnblogs.com/coco02/p/16882282.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性