تقنية

dict.get في بايثون: هل وجود المفتاح يمنع حساب البديل؟

get تعيد 4 والسجل [1].
بديل محسوب.

وجود المفتاح لا يؤخر حساب البديل. [1] [2]

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

لا؛ fallback() تُنفّذ قبل get. [1] [2]

  • وجود المفتاح لا يؤخر حساب البديل. [1] [2]
  • get تختار القيمة المعادة بعد تقييم الوسائط. [1] [2]
  • مثال مؤلف على CPython 3.12.14: fallback تسجل 1 في calls وتعيد 9؛ d={"red":4}. [1] [2]
  • d.get("red",fallback()) تعطي 4؛ calls=[1]، ولم يتغير القاموس. [1] [2]
  • تحكم بعد تصفير calls: d["red"] if "red" in d else fallback() تعطي 4، وcalls تبقى []؛ الفرع البديل لم يُقيّم. [1] [2]

الحساب والإرجاع

وجود المفتاح لا يؤخر حساب البديل. [1] [2]

قبل الاستدعاء

get تختار القيمة المعادة بعد تقييم الوسائط. [1] [2]

دالة تسجل استدعاءها

مثال مؤلف على CPython 3.12.14: fallback تسجل 1 في calls وتعيد 9؛ d={"red":4}. [1] [2]

calls=[] def fallback(): calls.append(1) return 9 d={"red":4} [1] [2]

الشرط يعيد 4 والسجل [].
فرع لم يُقيّم.

النتيجة والتحكم

d.get("red",fallback()) تعطي 4؛ calls=[1]، ولم يتغير القاموس. [1] [2]

d.get("red",fallback()) -> 4; calls -> [1] [1] [2]

تحكم بعد تصفير calls: d["red"] if "red" in d else fallback() تعطي 4، وcalls تبقى []؛ الفرع البديل لم يُقيّم. [1] [2]

المراجع

  1. Python — dict.get
  2. Python — evaluation

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

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