def func(arg1, arg2, arg3):

    print('arg1:', arg1)
    print('arg2:', arg2)
    print('arg3:', arg3, '\n')

l = [1, 2, 3]
t = (10, 20, 30)
s = {100, 200, 300}
d = {'arg1': 1000, 'arg2': 2000, 'arg3': 3000}

func(*l)
func(*t)
func(*s)
func(**d)

আউটপুটঃ

arg1: 1
arg2: 2
arg3: 3

arg1: 10
arg2: 20
arg3: 30

arg1: 200
arg2: 100
arg3: 300

arg1: 1000
arg2: 2000
arg3: 3000

ফাংশন কলের সময় ডিকশনারি বাদে দেখা যাচ্ছে ভ্যারিয়েবলের আগে অ্যাস্টেরিস্ক চিহ্ন ব্যবহার করলে ঐ ভ্যারিয়েলে থাকা লিস্ট/টাপল/সেটের মানগুলো সব আলাদা হয়ে যাচ্ছে। আবার ডিকশনারির বেলায় যদি শুধু একটা অ্যাস্টেরিস্ক ব্যবহার করি তাহলে ফাংশনে শুধু কি (key) পাস হচ্ছে এবং নিচের মত প্রিন্ট করছে।

arg1: arg3
arg2: arg2
arg3: arg1

এইখানে অ্যাস্টেরিস্ক চিহ্ন ব্যবহার করলে আসলে ভিতরে কী হচ্ছে? আর ডিকশনারির বেলায় একটি অ্যাস্টেরিস্ক ব্যবহার করলে কি পাস হয় কেন?

asked 21 Jan, 10:34

_Shaon_'s gravatar image

_Shaon_
708113

edited 21 Jan, 13:19

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
21618


মনে করুন আপনার এমন একটা ফাংশন আছে যে ফাংশনের আর্গুমেন্ট ভ্যারিয়েবল সংখ্যক। অর্থাৎ ২টি, ৩টি, ৪টি বা যেকোনো সংখ্যক হতে পারে যেটা আপনি জানেন না। তো এই ধরনের পরিস্থিতিতে আপনি কি করবেন?

এই সমস্যাটা সমাধান করার জন্যই মূলত অ্যাস্টেরিস্ক ব্যবহার করা হয়। একটা উদাহরণ দেয়,

def fun(*args, **kargs):
    print(args)
    print(kargs)

a = [1, 3, 4]
b = {"key1" : 1, "key2" : 2, "key3" : 3}

fun(*a, **b)

আউটপুটঃ

(1, 3, 4)
{'key3': 3, 'key2': 2, 'key1': 1}

এই ফাংশনের মধ্যে এখন আপনি যেকোনো সংখ্যক আর্গুমেন্ট পাঠাতে পারবেন।

এখন * এবং মধ্যে পার্থক্য কি?**

আপনার আর্গুমেন্ট যদি positional argument হয় তাহলে * ব্যবহার করতে হবে। কিন্তু আপনার আর্গুমেন্ট যদি keyword argument হয় তাহলে ** ব্যবহার করতে হবে।

এগুলো মূলত ফাংশনে আর্গুমেন্ট পাঠানোর নিয়ম।

ধন্যবাদ :)

permanent link

answered 21 Jan, 14:21

menon's gravatar image

menon
4.2k222

edited 21 Jan, 15:15

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
21618

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×83
×1

question asked: 21 Jan, 10:34

question was seen: 66 times

last updated: 21 Jan, 15:15