تقنية

types.coroutine في بايثون: لماذا تبقى iscoroutinefunction False؟

F=iscoroutinefunction; A=isawaitable; legacy: @coroutine; own=legacy(); F(legacy):False; A(own):True
مولدة مزينة.

فحص iscoroutinefunction لدالتنا المزينة يعطي False، لكن isawaitable لكائنها يعطي True. [1] [2] [3]

الخلاصة السريعة

False هنا. [1] [2] [3]

  • فحص iscoroutinefunction لدالتنا المزينة يعطي False، لكن isawaitable لكائنها يعطي True. [1] [2] [3]
  • CPython 3.12.14: نزين legacy بـcoroutine؛ F اختصار iscoroutinefunction وA اختصار isawaitable. [1] [2] [3]
  • F(legacy) تعطي False؛ A(own) تعطي True. الفحصان يستقبلان الدالة والكائن الناتج على الترتيب. [1] [2] [3]
  • تصف types الناتج بأنه coroutine قائمة على مولد؛ المصطلح ليس نتيجة فحص inspect. [1] [2] [3]
  • تحكم: plain غير المزينة تعطي False/False؛ native مع async def تعطي True/True. نغلق الكائنات قبل البدء، دون حلقة أحداث أو markcoroutinefunction. [1] [2] [3]

فحصان

فحص iscoroutinefunction لدالتنا المزينة يعطي False، لكن isawaitable لكائنها يعطي True. [1] [2] [3]

التزيين

CPython 3.12.14: نزين legacy بـcoroutine؛ F اختصار iscoroutinefunction وA اختصار isawaitable. [1] [2] [3]

False وTrue

F(legacy) تعطي False؛ A(own) تعطي True. الفحصان يستقبلان الدالة والكائن الناتج على الترتيب. [1] [2] [3]

from types import coroutine from inspect import iscoroutinefunction as F,isawaitable as A @coroutine def legacy(): yield from () return "bud" own=legacy() try:print(F(legacy),A(own)) finally:own.close() [1] [2] [3]

F=iscoroutinefunction; A=isawaitable; plain: generator; native: async def; p=plain(); n=native(); F(plain):False; A(p):False; F(native):True; A(n):True
تحكم مزدوج.

المصطلح والتحكم

تصف types الناتج بأنه coroutine قائمة على مولد؛ المصطلح ليس نتيجة فحص inspect. [1] [2] [3]

def plain(): yield from () return "bud" async def native():return "bud" p=plain();n=native() try: print(F(plain),A(p)) print(F(native),A(n)) finally:p.close();n.close() [1] [2] [3]

تحكم: plain غير المزينة تعطي False/False؛ native مع async def تعطي True/True. نغلق الكائنات قبل البدء، دون حلقة أحداث أو markcoroutinefunction. [1] [2] [3]

المراجع

  1. Python inspect
  2. CPython types
  3. Python types

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.