Python: match case
-
def alarm(item: list): match item: case [time, action]: print(f'{time} {action}') case [time, *actions]: for action in actions: print(f'^^ {time} {action}') alarm(['afternoon', 'work']) alarm(['morning', 1, 5, 6])
-
def alarm(item: list): match item: case [('morning' | 'afternoon' | 'evening') as time, action]: print(f'Good {time} {action}') case _: print('invalid') alarm(['qwer']) alarm(['evening', 'work'])
-
def alarm(item: list): match item: case ['evening', action]: print(f'You almost finished the day! Now {action}') case [time, action]: print(f'Good {time} It is time to {action}') case _: print('default') alarm(['qwer']) alarm(['evening', 'work']) alarm(['morning', 55])
def alarm(item: list): match item: case ['evening', action] if action not in ['work', 'study']: print(f'You almost finished the day! Now {action}') case [time, action]: print(f'Good {time} It is time to {action}') case _: print('default') alarm(['qwer']) alarm(['evening', 'work']) alarm(['evening', 'qwer']) alarm(['morning', 55])
-
class Direction: def __init__(self, horizontal=None, vertical=None): self.horizontal = horizontal self.vertical = vertical def location(direction: Direction): match direction: case Direction(horizontal='east', vertical='north'): print(direction, 11) case Direction(horizontal='west', vertical='south'): print(direction, 22) case Direction(horizontal=None, vertical=y): print(direction, 33, y) case Direction(horizontal=x, vertical=None): print(direction, 44, x) case Direction(horizontal=x, vertical=y): print(direction, 55, x, y) case _: print('invalid') location(Direction('east', 'north')) location(Direction('west', 'south')) location(Direction(None, 'qwer')) location(Direction('rtyu', None)) location(Direction('zxc', 'uiop')) location(Direction()) location(55)
-
def status(status: int): match status: case 400: return 'Bad Request' case 401 | 403: return 'Authentication Error' case _: return 'Others'
match依然没有产生新的作用域, match先进行case后面的deconstruct,取得变量,而后进行if判断
match会进行短路, 注意time也是UnboundLocalError
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律