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"]](https://images.bahralolom.com/assets/local-2000-20261012/BA-1822/python-argparse-dispatch-values.png)
النداء الصريح
مثال التوثيق يستدعي الدالة بعد التحليل؛ التنفيذ ينقلها كقيمة هنا. [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]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
![دالة محفوظة؛ argparse; subcommand:bud; set_defaults(func=fn); input:["bud"]; ns.func is fn:True; calls:[]](https://images.bahralolom.com/assets/local-2000-20261012/BA-1822/python-argparse-dispatch-main.png)