async دالة/سياق غير متزامن
آخر تحديث: 2026-09-22
async دالة/سياق غير متزامن
async تُستخدم لتعريف دالة async def أو سياق async with.
| التصنيف | الكلمات المفتاحية والعبارات |
|---|---|
| النوع | كلمة مفتاحية / عبارة |
| إصدار بايثون | 3.5+ |
📝 الصياغة
async def name(params):
body
[async with expr as var: block]
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
hi
🏷️ كلمات مفتاحية / عبارات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qما الفرق بين `async def` و`def`؟
Aيُعرّف `async def` دالة كوروتين (coroutine). استدعاؤها لا ينفّذ الجسم؛ بل يُرجع كائن كوروتين. يجب عليك `await` عليه، أو تشغيله بـ `asyncio.run()`، ليعمل فعلًا.
Qلماذا لا يعمل استدعاء دالة async في المستوى الأعلى للوحدة؟
Aلأن الاستدعاء يُرجع كائن كوروتين، ولا يستطيع كود المستوى الأعلى استخدام `await` مباشرةً. الطريقة الصحيحة هي تغليفه: عرّف `async def main(): ...` وشغّله بـ `asyncio.run(main())`.
Qهل يمكن استخدام `async` مع `asyncio` فقط؟
Aلا. `async`/`await` هما صياغة لغوية؛ `asyncio` مجرد التنفيذ الأكثر شيوعًا لحلقة الأحداث. يُستخدم `async with` و`async for` لإدارة السياق غير المتزامن والتكرار غير المتزامن، على التوالي.