আমি আরও একটি উত্তর যুক্ত করতে চাই:
আপনি যখন কলিং ফাংশনে কীওয়ার্ড আর্গুমেন্টের সাথে ভুল অবস্থানের অর্ডার সহ অবস্থানগত পরামিতিটি পাস করার চেষ্টা করেন তখন এটি ঘটে।
there is difference between parameter and argument
আপনি এখানে অজুতে আর্গুমেন্টস এবং প্যারামিটার সম্পর্কে বিশদটি পড়তে পারেন
def hello(a,b=1, *args):
print(a, b, *args)
hello(1, 2, 3, 4,a=12)
যেহেতু আমাদের তিনটি পরামিতি রয়েছে:
a হল পজিশনাল প্যারামিটার
b = 1 হ'ল কীওয়ার্ড এবং ডিফল্ট প্যারামিটার
* আরগগুলি পরিবর্তনশীল দৈর্ঘ্যের পরামিতি
সুতরাং আমরা প্রথমে একটি পজিশনাল প্যারামিটার হিসাবে অর্পণ করি, এর অর্থ আমাদের এর অবস্থান ক্রমে অবস্থানগত যুক্তির মান প্রদান করতে হবে, এখানে আদেশের বিষয়টি। তবে আমরা কলিং ফাংশনটি ইন-এর জায়গায় আর্গুমেন্ট 1 দিয়ে যাচ্ছি এবং তারপরে আমরা কী-ওয়ার্ড আর্গুমেন্ট হিসাবে বিবেচনা করে একটিকে মান প্রদান করব। এখন একটি দুটি মান আছে:
একটি হল অবস্থানগত মান: a = 1
দ্বিতীয়টি হ'ল মূলশব্দযুক্ত মান যা এক = 12
সমাধান
আমরা পরিবর্তন করতে হবে hello(1, 2, 3, 4,a=12)
করতে hello(1, 2, 3, 4,12)
তাই এখন একটি মাত্র একজন অবস্থানগত মান যা 1 এবং b মান 2 পেতে এবং মূল্যবোধের বিশ্রাম * args (পরিবর্তনশীল দৈর্ঘ্য প্যারামিটার) পেতে হবে পাবেন
অতিরিক্ত তথ্য
আমরা যদি চাই যে * টির জন্য 2,3,4 এবং একটিটি 1 এবং খ 12 পাওয়া উচিত 12
তাহলে আমরা এটির মতো করতে পারি
def hello(a,*args,b=1):
pass
hello(1, 2, 3, 4,b=12)
আরো কিছু :
def hello(a,*c,b=1,**kwargs):
print(b)
print(c)
print(a)
print(kwargs)
hello(1,2,1,2,8,9,c=12)
আউটপুট:
1
(2, 1, 2, 8, 9)
1
{'c': 12}
self
অন্তর্নিহিতের চেয়ে সুস্পষ্ট কেন ভাল তা আপনি কোনও সন্তোষজনক উত্তর পাবেন নাthis
।