def handle_input(self, key_event: event.Event) -> None:
    for menu in self.menus:
        menu.handle_input(key_event)
    if key_event.type == pygame.KEYDOWN:
        match key_event.key:
            case pygame.K_w | pygame.K_UP:
                self.select_menu_key -= 1
                if self.select_menu_key < 0:
                    self.select_menu_key = 0
                self._key_menu_select_handle()
            case pygame.K_s | pygame.K_DOWN:
                self.select_menu_key += 1
                if self.select_menu_key > len(self.menus) -1:
                    self.select_menu_key = len(self.menus) -1
                self._key_menu_select_handle()
我的 vim 配色还没发识别这个最新的语法😅
|  |      1hutoer      2021-11-28 09:02:24 +08:00 nice ,现在的 python 特性越来越多,离简洁渐行渐远呀。上次看别人的代码,加了大量 typing ,我有几个地方居然看不懂了。其实我更期待性能的提升,好歹比 php 快吧 | 
|  |      2nonduality      2021-11-28 09:05:26 +08:00 这种写法嵌套深度多了一层,写成`if key_event.key in [pygame.K_w, pygame.K_UP]: ...` 应该更清晰。 | 
|      3lneoi      2021-11-28 09:33:22 +08:00  8 进来之前还在想 python 版 switch 游戏机是什么意思 | 
|  |      4ChrisFreeMan OP @hutoer 等待下个 3.11 版本吧,这个版本后开始对 python 进行性能改进,3.11 据说性能翻倍 | 
|  |      5ChrisFreeMan OP @nonduality 呃..match 本来就会多一层,后续条件多了就会显得更优雅一点 | 
|  |      6ChrisFreeMan OP @lneoi 啊,这... | 
|      7way2create      2021-11-28 11:05:43 +08:00 @lneoi +1 我也 | 
|      8Leviathann      2021-11-28 13:12:01 +08:00 via iPhone  1 这个应该是 pattern matching 吧 把它当 switch 用是最基础的一种形式。。 | 
|      92i2Re2PLMaDnghL      2021-11-28 16:24:43 +08:00 @nonduality 主要是 pattern matching 用的,单纯判常量是不如直接 if in 。 | 
|      11lzk50136      2021-11-29 08:52:44 +08:00 我还以为 python 写的 switch 模拟器,还在想 python 什么时候性能变得那么高了。 | 
|      12hervey0424      2021-11-29 09:03:56 +08:00 我还以为模拟器呢 | 
|  |      13ChrisFreeMan OP @lzk50136 有 python 写的 game boy 模拟器 | 
|  |      14cnit      2021-11-29 10:25:54 +08:00 等着收律师函吧 :doge | 
|      15ungrown      2021-11-29 10:35:16 +08:00  1 @hutoer #1 python 的性能一时半会儿上不去,应该是供需两方都不太上心。 需求就不太强烈,几乎一半的场景都是 IO 密集型,甚至都不在乎所谓的性能和全局锁,剩下的几乎就是拿 python 来写“超脚本”,还有些是临时拿 python 写个原型验证一下算法和流程,打一开始就准备之后拿 C 之类的高性能语言重写。 供给侧的问题主要还是围绕在“动态类型”这个点上,动态类型不做 JIT 的话就快不起来,做了 JIT 的话性能基本就没啥短板了,pypy 已经证明了。无非这个 JIT 不容易做,和 C 接口犯冲,而 C 接口是 python 扩展性的基石,当然这个并不是没法做,只是优先级不高,进展慢。 其实真遇到需要运算速度的场景,直接把功能提取出来,用 C 或者 cython 写个模块不就行了。 | 
|  |      16wpyfawkes      2021-11-29 14:07:57 +08:00 | 
|  |      17ChrisFreeMan OP @wpyfawkes 上一个搞 switch 破解的最近被任地狱告到巨额赔款 | 
|      18volvo007      2021-11-29 17:49:56 +08:00 性能尽快提高一点就够了, 特性加太多很多老版本也不兼容 |