উত্তর:
store_true
বিকল্প স্বয়ংক্রিয়ভাবে ডিফল্ট মান তৈরি করে মিথ্যা ।
একইভাবে, কমান্ড-লাইন আর্গুমেন্ট উপস্থিত না হলে সত্যেstore_false
ডিফল্ট হবে ।
এই আচরণের উত্সটি সংক্ষিপ্ত এবং পরিষ্কার: http://hg.python.org/cpython/file/2.7/Lib/argparse.py#l861
আরগপার্স ডক্স বিষয়টিতে পরিষ্কার নয়, তাই এখনই এগুলি আপডেট করব: http://hg.python.org/cpython/rev/49677cc6d83a
রেমন্ড হেটেঞ্জার ইতিমধ্যে ওপির প্রশ্নের উত্তর দিয়েছেন।
যাইহোক, আমার গ্রুপ "store_false" ব্যবহার করে পঠনযোগ্যতার সমস্যার সম্মুখীন হয়েছে। বিশেষত যখন নতুন সদস্যরা আমাদের দলে যোগদান করেন। এর কারণ এটি ভাবার পক্ষে স্বজ্ঞাত উপায় হ'ল কোনও ব্যবহারকারী যখন কোনও যুক্তি নির্দিষ্ট করে, তখন সেই যুক্তির সাথে সম্পর্কিত মানটি সত্য বা 1 হবে।
উদাহরণস্বরূপ, যদি কোডটি হয় -
parser.add_argument('--stop_logging', action='store_false')
কোড পাঠক সম্ভবত স্টপ_লগিংয়ের মানটি সত্য হলে লগিং স্টেটমেন্টটি বন্ধ হয়ে যাওয়ার আশা করতে পারে। তবে নীচের মতো কোডগুলি পছন্দসই আচরণের বিপরীত দিকে পরিচালিত করবে -
if not stop_logging:
#log
অন্যদিকে, যদি ইন্টারফেসটি নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয় তবে "if-বিবৃতি" কাজ করে এবং পড়তে আরও স্বজ্ঞাত -
parser.add_argument('--stop_logging', action='store_true')
if not stop_logging:
#log
parser.add_argument('--stop_logging', action='store_false', dest='use_logging')
।
store_false আসলে ডিফল্ট হিসাবে 0
ডিফল্ট হবে (আপনি যাচাই করার জন্য পরীক্ষা করতে পারেন)। এটির ডিফল্ট কী পরিবর্তন করতে কেবল default=True
আপনার ঘোষণায় যুক্ত করুন।
সুতরাং এই ক্ষেত্রে:
parser.add_argument('-auto', action='store_true', default=True)
>>> parser.add_argument('--bar', action='store_false')
_StoreFalseAction(option_strings=['--bar'], dest='bar', nargs=0, const=False, default=True, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args([])
Namespace(bar=True)
-bar
তবে hg.python.org/cpython/rev/49677cc6d83a এর উপর ভিত্তি করেdest
স্বয়ংক্রিয়ভাবে সেট করা আছে । তবে কোডটিতে এই ডিফল্ট আচরণটি কোথায় সেট করা হয়েছে তা আমি দেখতে পাচ্ছি না। আমি সর্বদা যুক্তিটি সুস্পষ্টভাবে সেট করে রেখেছি । এছাড়াও, আমি লেট মনে ডিফল্ট জন্য বিকল্প সত্যিই অর্থে দেখা যায় না যদি হয় । এই ক্ষেত্রে হওয়া উচিত নয় ?bar
dest
bar
dest
--bar
--bar
store_false
dest
notbar