تقنية

namespace في argparse: هل الافتراضي يغيّر خاصية موجودة؟

argparse; --tag; default:"leaf"; fresh Namespace(tag="bud"); []:"bud"; ["--tag","flower"]:"flower"
موجودة.

الافتراضي لا يمحو الخاصية الموجودة في مساحة الأسماء هنا. [1] [2]

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

لا عند الغياب؛ القيمة المقدمة تغيّرها هنا. [1] [2]

  • الافتراضي لا يمحو الخاصية الموجودة في مساحة الأسماء هنا. [1] [2]
  • على CPython 3.12.14، نضيف --tag بافتراضي "leaf"؛ نمرر namespace= بمساحة Namespace(tag="bud") جديدة لكل حالة؛ تخزين عادي. [1] [2]
  • تحليل [] يبقي tag="bud"؛ تحليل ["--tag","flower"] يعطي tag="flower". كل استدعاء يعيد الكائن الممرر نفسه. [1] [2]
  • تهيئة الافتراضيات تتحقق من وجود الخاصية؛ فعل التخزين يُسند القيمة المقدمة عند تحليل الخيار. [1] [2]
  • تحكم بمحلل مستقل والخيار نفسه: مساحة Namespace() جديدة دون tag، وتحليل [] يعطي tag="leaf" في الكائن نفسه. [1] [2]

خاصية موجودة

الافتراضي لا يمحو الخاصية الموجودة في مساحة الأسماء هنا. [1] [2]

المساحة الممررة

على CPython 3.12.14، نضيف --tag بافتراضي "leaf"؛ نمرر namespace= بمساحة Namespace(tag="bud") جديدة لكل حالة؛ تخزين عادي. [1] [2]

غياب وحضور

تحليل [] يبقي tag="bud"؛ تحليل ["--tag","flower"] يعطي tag="flower". كل استدعاء يعيد الكائن الممرر نفسه. [1] [2]

import argparse own=argparse.ArgumentParser() own.add_argument("--tag",default="leaf") seed=argparse.Namespace(tag="bud") ns=own.parse_args([],namespace=seed) print(ns.tag,ns is seed) supplied_seed=argparse.Namespace(tag="bud") sn=own.parse_args(["--tag","flower"],namespace=supplied_seed) print(sn.tag,sn is supplied_seed) [1] [2]

argparse; independent control; --tag; default:"leaf"; Namespace(); []:"leaf"
غائبة.

خاصية غير موجودة

تهيئة الافتراضيات تتحقق من وجود الخاصية؛ فعل التخزين يُسند القيمة المقدمة عند تحليل الخيار. [1] [2]

control=argparse.ArgumentParser() control.add_argument("--tag",default="leaf") empty_seed=argparse.Namespace() cn=control.parse_args([],namespace=empty_seed) print(cn.tag,cn is empty_seed) [1] [2]

تحكم بمحلل مستقل والخيار نفسه: مساحة Namespace() جديدة دون tag، وتحليل [] يعطي tag="leaf" في الكائن نفسه. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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