تقنية

ZoneInfo في بايثون: هل الاسم نفسه يعني الكائن نفسه؟

a وb من البناء العادي كائن واحد وc من no_cache مختلف
هوية كائنات المثال. [1] [2]

المفتاح نفسه، والهوية قد تختلف. [1] [2]

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

البناء العادي يستخدم الكاش، بينما no_cache ينتج كائنًا جديدًا. [1] [2]

  • نبني a وb للمفتاح UTC. [1] [2]
  • دون إبطال الكاش، يعطي a is b نتيجة True. [1] [2]
  • نبني c مع no_cache. [1] [2]
  • يعطي a is c نتيجة False. [1] [2]
  • اختبرنا 3.12.14 مع بيانات UTC متاحة. [1] [2]

المثال

from zoneinfo import ZoneInfo as Z
a=Z('UTC');b=Z('UTC')
c=Z.no_cache('UTC')
print(a is b)
print(a is c)

[1] [2]

المخرجان True ثم False. [1] [2]

ما الذي تقارنه is؟

نقارن الهوية، لا فرق التوقيت. توضح نسخة بايثون البديلة كاش البناء العادي. [1] [2]

مع تجاوز الكاش، ينتج كل استدعاء كائنًا جديدًا، حتى عند تكرار المفتاح نفسه. [1] [2]

استدعاءان عاديان للمفتاح UTC يشتركان في الكائن واستدعاءا no_cache مختلفان
استدعاءان لكل نوع بناء. [1] [2]

حدود التجربة

لم نبطل الكاش أو نغيّر بيانات المناطق. يلزم توافر بيانات المنطقة؛ لا نستنتج حساب التواريخ من الهوية وحدها. [1] [2]

المراجع

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

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