এই প্রশ্নের ইতিমধ্যে অনেক উচ্চ উত্সাহিত উত্তর এবং একটি স্বীকৃত উত্তর ছিল, তবে এগুলির সমস্ত এখনও বুলিয়ান সমস্যাটি প্রকাশ করার বিভিন্ন উপায়ে বিভ্রান্ত হয়েছিল এবং একটি গুরুত্বপূর্ণ বিষয়টি মিস করেছিল:
আমার কাছে পাইথন স্ক্রিপ্ট রয়েছে যা শূন্য বা তিনটি কমান্ড লাইন আর্গুমেন্ট গ্রহণ করতে পারে। (হয় এটি পূর্বনির্ধারিত আচরণে চলতে পারে বা নির্দিষ্ট তিনটি মান প্রয়োজন)
এই যুক্তিটি প্রথমে আপনার কোডের দায়িত্ব হওয়া উচিত নয় , বরং এটিargparseমডিউলদ্বারা পরিচালনা করা উচিত। কোনও বিবৃতি লিখলে জটিল লিখতে বিরক্ত করবেন না, পরিবর্তে আপনার যুক্তি পার্সারটিকে সেটআপ করতে পছন্দ করুন:
#!/usr/bin/env python
import argparse as ap
parser = ap.ArgumentParser()
parser.add_argument('--foo', nargs=3, default=['x', 'y', 'z'])
args = parser.parse_args()
print(args.foo)
এবং হ্যাঁ, এটি কোনও অবস্থানগত যুক্তি নয়, এমন বিকল্প হতে হবে , কারণ এটি সর্বোপরি .চ্ছিক ।
সম্পাদিত: মন্তব্যের LarsH উদ্বেগের সুরাহা করতে, নীচের কিভাবে আপনি এটা লিখতে পারে যদি আপনি নির্দিষ্ট আপনি হয় 3 বা 0 দিয়ে ইন্টারফেস চেয়েছিলেন ছিল একটি উদাহরণ অবস্থানগত args। আমি মতামত করছি যে পূর্ববর্তী ইন্টারফেসটি আরও ভাল স্টাইল, কারণ alচ্ছিক যুক্তিগুলি বিকল্প হওয়া উচিত, তবে সম্পূর্ণতার স্বার্থে এখানে একটি বিকল্প পদ্ধতি রয়েছে। usageআপনার পার্সার তৈরিকরার সময় ওভাররাইডিং কোয়ার্গ নোট করুন, কারণargparseঅন্যথায় একটি বিভ্রান্তিমূলক ব্যবহার বার্তা স্বয়ংক্রিয়ভাবে উত্পন্ন করবে!
#!/usr/bin/env python
import argparse as ap
parser = ap.ArgumentParser(usage='%(prog)s [-h] [a b c]\n')
parser.add_argument('abc', nargs='*', help='specify 3 or 0 items', default=['x', 'y', 'z'])
args = parser.parse_args()
if len(args.abc) != 3:
parser.error('expected 3 arguments')
print(args.abc)
এখানে কয়েকটি ব্যবহারের উদাহরণ দেওয়া হল:
# default case
wim@wim-zenbook:/tmp$ ./three_or_none.py
['x', 'y', 'z']
# explicit case
wim@wim-zenbook:/tmp$ ./three_or_none.py 1 2 3
['1', '2', '3']
# example failure mode
wim@wim-zenbook:/tmp$ ./three_or_none.py 1 2
usage: three_or_none.py [-h] [a b c]
three_or_none.py: error: expected 3 arguments