From d060c45928824251f257ffa7f99f5d9813edf2d5 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Mon, 13 Feb 2023 17:22:47 +0800 Subject: [PATCH] up --- README.md | 3 ++- README_zh.md | 3 ++- src/builtins.h | 14 ++++++++++---- tests/_exception.py | 16 ++++++++++------ 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 256683be..5af6b07f 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,8 @@ Please see https://pocketpy.dev for details or try [Live Demo](https://bluelovet | Reflection | `hasattr()/getattr()/setattr()` | YES | | Import | `import/from..import` | YES | | Context Block | `with as :` | YES | -| Type Annotation | `def f(a: int, b : float = 1)` | YES | +| Type Annotation | `def f(a:int, b:float=1)` | YES | +| Generator | `yield i` | YES | ## Getting Started diff --git a/README_zh.md b/README_zh.md index b3d1ec9a..39270055 100644 --- a/README_zh.md +++ b/README_zh.md @@ -37,7 +37,8 @@ PocketPy是一个轻量级的Python解释器,为嵌入至游戏引擎而设计 | 反射 | `hasattr()/getattr()/setattr()` | YES | | 导入模块 | `import/from..import` | YES | | 上下文管理器 | `with as :` | YES | -| 类型标注 | `def f(a: int, b : float = 1)` | YES | +| 类型标注 | `def f(a:int, b:float=1)` | YES | +| 生成器 | `yield i` | YES | ## 快速上手 diff --git a/src/builtins.h b/src/builtins.h index f4255194..37d21f3c 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -278,13 +278,19 @@ class dict: return default def keys(self): - return [kv[0] for kv in self._a if kv is not None] + for kv in self._a: + if kv is not None: + yield kv[0] def values(self): - return [kv[1] for kv in self._a if kv is not None] + for kv in self._a: + if kv is not None: + yield kv[1] def items(self): - return [kv for kv in self._a if kv is not None] + for kv in self._a: + if kv is not None: + yield kv def clear(self): self._a = [None] * self._capacity @@ -410,7 +416,7 @@ class set: return '{'+ ', '.join(self._a.keys()) + '}' def __iter__(self): - return self._a.keys().__iter__() + return self._a.keys() )"; const char* kRandomCode = R"( diff --git a/tests/_exception.py b/tests/_exception.py index 4e77ac35..996f6b1e 100644 --- a/tests/_exception.py +++ b/tests/_exception.py @@ -5,23 +5,25 @@ class A: try: a = A() b = a[1] + exit(1) except: - print("PASS 01") + pass try: a = {'1': 3, 4: None} x = a[1] + exit(1) except: - print("PASS 02") + pass assert True def f(): try: raise KeyError('foo') except A: # will fail to catch - assert False + exit(1) except: - print("PASS 03") + pass assert True f() @@ -40,12 +42,14 @@ def f1(): try: f1() + exit(1) except KeyError: - print("PASS 04") + pass assert True, "Msg" try: assert False, "Msg" + exit(1) except AssertionError: - print("PASS 05") + pass