تقنية

pickle وJSON في بايثون: هل يبقى الاشتراك في القائمة؟

restored تشترك في القائمة الداخلية في المثال.
مشاركة مع pickle.

في مثال القائمة المشتركة، يحفظ pickle المشاركة الداخلية؛ JSON لا يحفظها. [1] [2]

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

تبقى مع pickle، وتنفصل القائمتان مع JSON في المثال الافتراضي. [1] [2]

  • في مثال القائمة المشتركة، يحفظ pickle المشاركة الداخلية؛ JSON لا يحفظها. [1] [2]
  • البيانات محلية مؤلفة؛ لا تحمل pickle مجهول الثقة. [1]
  • على CPython 3.12.14: restored تشترك، وdecoded تنفصل رغم تساوي القيم. [1] [2]
  • بعد restored[0].append("leaf") وdecoded[0].append("leaf") تتغير الثانية في restored فقط. [1] [2]
  • تحكم: مرجعان لقائمة مقابل قائمتين مستقلتين يطابقان الأثر؛ يبقى root. [1] [2]

مشاركة بعد الاسترجاع

في مثال القائمة المشتركة، يحفظ pickle المشاركة الداخلية؛ JSON لا يحفظها. [1] [2]

حدود البيانات

البيانات محلية مؤلفة؛ لا تحمل pickle مجهول الثقة. [1]

قيم متساوية وهوية مختلفة

على CPython 3.12.14: restored تشترك، وdecoded تنفصل رغم تساوي القيم. [1] [2]

import json, pickle child=["bud"] root=[child,child] restored=pickle.loads( pickle.dumps(root,protocol=4)) decoded=json.loads(json.dumps(root)) [1] [2]

decoded تملك قائمتين مستقلتين في المثال.
انفصال مع JSON.

أثر الإضافة والتحكم

بعد restored[0].append("leaf") وdecoded[0].append("leaf") تتغير الثانية في restored فقط. [1] [2]

restored[0] is restored[1] -> True; decoded[0] is decoded[1] -> False [1] [2]

تحكم: مرجعان لقائمة مقابل قائمتين مستقلتين يطابقان الأثر؛ يبقى root. [1] [2]

المراجع

  1. Python pickle
  2. Python JSON

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

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