تقنية

iscoroutine في بايثون: هل True تعني تنفيذ جسم الدالة؟

الفحص True وعدد مرات جسمنا صفر
كائن قبل البدء. [1] [2]

نفحص كائنًا مؤلفًا قبل بدء جسمه. [1] [2]

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

لا؛ True تصف الكائن هنا. [1] [2]

  • استدعاء f() يعيد كائن coroutine. [1] [2]
  • يعطي iscoroutine(c) القيمة True. [1] [2]
  • جسمنا يرفع RuntimeError لو بدأ؛ لم يظهر هنا. [1] [2]
  • نغلق كائننا قبل البدء في finally. [1] [2]
  • اختبرنا 3.12.14 دون حلقة أحداث. [1] [2]

المثال

import asyncio as u
async def f():
 raise RuntimeError('ran')
c=f()
try:print(u.iscoroutine(c))
finally:c.close()

[1] [2]

المخرج True وحده. [1] [2]

الكائن والجسم

الفحص يتحقق من نوع الكائن؛ لا يستدعي جسمنا. كررنا الفحص وبقي عداد الجسم صفرًا. هذا يختلف عن تشغيل الكائن للوصول إلى تعليماته. [1] [2]

عدد مرات الجسم صفر قبل الإغلاق وبعده
إغلاق كائننا قبل البدء. [1] [2]

حدود الإغلاق

في كائننا الذي لم يبدأ، بقي العداد صفرًا بعد close(). لا نعمم هذه الملاحظة على كائن بدأ التنفيذ أو مهمة مجدولة. [1] [2]

المراجع

  1. Python: coroutines and tasks
  2. CPython 3.12.14: asyncio/coroutines.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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