تقنية

set_defaults في argparse: هل يشغّل دالة الأمر؟

دالة محفوظة؛ argparse; subcommand:bud; set_defaults(func=fn); input:["bud"]; ns.func is fn:True; calls:[]
محفوظة.

set_defaults يحفظ دالتنا، ولا يشغّلها عند التحليل هنا. [1] [2]

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

لا؛ الاستدعاء الصريح يشغّل دالتنا هنا. [1] [2]

  • set_defaults يحفظ دالتنا، ولا يشغّلها عند التحليل هنا. [1] [2]
  • على CPython 3.12.14، أمر bud فرعي عادي يضبط func=fn؛ جسم fn يضيف "bud" إلى calls. لا أفعال مخصصة أو type. [1] [2]
  • بعد parse_args(["bud"])، ns.func is fn يساوي True وتبقى calls=[]. [1] [2]
  • مثال التوثيق يستدعي الدالة بعد التحليل؛ التنفيذ ينقلها كقيمة هنا. [1] [2]
  • تحكم مستقل بالتعريفات نفسها ودالة أخرى: قبل الاستدعاء ccalls=[]؛ بعد cns.func(cns) تصبح ["bud"]. المقارنة تخص دالتينا فقط. [1] [2]

حفظ الدالة

set_defaults يحفظ دالتنا، ولا يشغّلها عند التحليل هنا. [1] [2]

دالة وأمر

على CPython 3.12.14، أمر bud فرعي عادي يضبط func=fn؛ جسم fn يضيف "bud" إلى calls. لا أفعال مخصصة أو type. [1] [2]

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

بعد parse_args(["bud"])، ns.func is fn يساوي True وتبقى calls=[]. [1] [2]

import argparse calls=[] def fn(ns): calls.append("bud") own=argparse.ArgumentParser() child=own.add_subparsers().add_parser("bud") child.set_defaults(func=fn) ns=own.parse_args(["bud"]) print(ns.func is fn,calls) [1] [2]

تحكم مستقل؛ argparse; subcommand:bud; set_defaults(func=cfn); input:["bud"]; cns.func is cfn:True; ccalls before:[]; cns.func(cns); ccalls after:["bud"]
مستدعاة.

النداء الصريح

مثال التوثيق يستدعي الدالة بعد التحليل؛ التنفيذ ينقلها كقيمة هنا. [1] [2]

ccalls=[] def cfn(ns): ccalls.append("bud") control=argparse.ArgumentParser() cc=control.add_subparsers().add_parser("bud") cc.set_defaults(func=cfn) cns=control.parse_args(["bud"]) print(cns.func is cfn,ccalls) cns.func(cns) print(ccalls) [1] [2]

تحكم مستقل بالتعريفات نفسها ودالة أخرى: قبل الاستدعاء ccalls=[]؛ بعد cns.func(cns) تصبح ["bud"]. المقارنة تخص دالتينا فقط. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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