পাইথনে ফাংশন আর্গুমেন্ট হিসাবে তালিকা, টিপল এবং অভিধান প্রসারিত এবং পাস করা

ব্যবসায়

পাইথনে, তালিকা (অ্যারে), টিপলস এবং অভিধানগুলি প্রসারিত করা যেতে পারে (আনপ্যাক করা) এবং তাদের সংশ্লিষ্ট উপাদানগুলিকে ফাংশন আর্গুমেন্ট হিসাবে একসাথে পাস করা যেতে পারে।

একটি ফাংশন কল করার সময়, তালিকা এবং টিপলগুলির জন্য * এবং অভিধানগুলির জন্য ** দিয়ে আর্গুমেন্ট উল্লেখ করুন। তারকাচিহ্নের সংখ্যা নোট করুন *।

নিম্নলিখিত বিবরণ এখানে বর্ণনা করা হয়.

  • একটি তালিকা প্রসারিত করুন (আনপ্যাক করুন) বা * (একটি তারকাচিহ্ন) দিয়ে টিপল করুন
    • ডিফল্ট আর্গুমেন্ট সহ ফাংশনের জন্য
    • পরিবর্তনশীল-দৈর্ঘ্য আর্গুমেন্ট সহ ফাংশনের জন্য
  • ** (দুটি তারকাচিহ্ন) দিয়ে অভিধান প্রসারিত করুন (আনপ্যাক করুন)
    • ডিফল্ট আর্গুমেন্ট সহ ফাংশনের জন্য
    • পরিবর্তনশীল-দৈর্ঘ্য আর্গুমেন্ট সহ ফাংশনের জন্য

ফাংশন সংজ্ঞায়িত করার সময় পাইথন ফাংশন, ডিফল্ট আর্গুমেন্ট এবং *,** এর সাথে পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্টের মৌলিক ব্যবহারের জন্য নিম্নলিখিত নিবন্ধটি দেখুন।

একটি তালিকা প্রসারিত করুন (আনপ্যাক করুন) বা * (একটি তারকাচিহ্ন) দিয়ে টিপল করুন

যখন একটি তালিকা বা টিপল * এর সাথে একটি আর্গুমেন্ট হিসাবে নির্দিষ্ট করা হয়, তখন এটি প্রসারিত হয় এবং প্রতিটি উপাদান একটি পৃথক যুক্তি হিসাবে পাস করা হয়।

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

l = ['one', 'two', 'three']

func(*l)
# arg1 = one
# arg2 = two
# arg3 = three

func(*['one', 'two', 'three'])
# arg1 = one
# arg2 = two
# arg3 = three

t = ('one', 'two', 'three')

func(*t)
# arg1 = one
# arg2 = two
# arg3 = three

func(*('one', 'two', 'three'))
# arg1 = one
# arg2 = two
# arg3 = three

নিম্নলিখিত ব্যাখ্যা একটি তালিকার জন্য, কিন্তু একই একটি tuple প্রযোজ্য.

যদি উপাদানের সংখ্যা আর্গুমেন্টের সংখ্যার সাথে মেলে না, তাহলে একটি TypeError ত্রুটি দেখা দেয়।

# func(*['one', 'two'])
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(*['one', 'two', 'three', 'four'])
# TypeError: func() takes 3 positional arguments but 4 were given

ডিফল্ট আর্গুমেন্ট সহ ফাংশনের জন্য

যদি একটি ডিফল্ট আর্গুমেন্ট সেট করা হয়, যদি উপাদানের সংখ্যা অপর্যাপ্ত হয় তাহলে ডিফল্ট আর্গুমেন্ট ব্যবহার করা হয়। উপাদানের সংখ্যা খুব বেশি হলে, একটি TypeError ত্রুটি ঘটে।

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(*['one', 'two'])
# arg1 = one
# arg2 = two
# arg3 = 3

func_default(*['one'])
# arg1 = one
# arg2 = 2
# arg3 = 3

# func_default(*['one', 'two', 'three', 'four'])
# TypeError: func_default() takes from 0 to 3 positional arguments but 4 were given

পরিবর্তনশীল-দৈর্ঘ্য আর্গুমেন্ট সহ ফাংশনের জন্য

একটি পরিবর্তনশীল-দৈর্ঘ্যের যুক্তি সেট করা হলে, অবস্থানগত যুক্তির জন্য উপাদানের পরে সমস্ত উপাদান পরিবর্তনশীল-দৈর্ঘ্যের যুক্তিতে পাস করা হয়।

def func_args(arg1, *args):
    print('arg1 =', arg1)
    print('args =', args)

func_args(*['one', 'two'])
# arg1 = one
# args = ('two',)

func_args(*['one', 'two', 'three'])
# arg1 = one
# args = ('two', 'three')

func_args(*['one', 'two', 'three', 'four'])
# arg1 = one
# args = ('two', 'three', 'four')

** (দুটি তারকাচিহ্ন) দিয়ে অভিধান প্রসারিত করুন (আনপ্যাক করুন)

যখন একটি ডিকশনারি ডিক্ট ** এর সাথে একটি আর্গুমেন্ট হিসাবে নির্দিষ্ট করা হয়, তখন উপাদান কীগুলি আর্গুমেন্টের নাম হিসাবে প্রসারিত হয় এবং আর্গুমেন্টের মান হিসাবে মানগুলি প্রসারিত হয় এবং প্রতিটি একটি পৃথক যুক্তি হিসাবে পাস করা হয়।

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

d = {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}

func(**d)
# arg1 = one
# arg2 = two
# arg3 = three

func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# arg2 = two
# arg3 = three

যদি আর্গুমেন্ট নামের সাথে মেলে এমন কোন কী না থাকে বা মেলে না এমন একটি কী থাকে, তাহলে একটি TypeError ত্রুটি দেখা দেবে।

# func(**{'arg1': 'one', 'arg2': 'two'})
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# TypeError: func() got an unexpected keyword argument 'arg4'

ডিফল্ট আর্গুমেন্ট সহ ফাংশনের জন্য

চিত্র যেখানে অভিধানের কীগুলির সাথে মেলে শুধুমাত্র যুক্তি নামের মানগুলি আপডেট করা হয়েছে৷

একটি কী যা আর্গুমেন্ট নামের সাথে মেলে না তার ফলে একটি TypeError ত্রুটি দেখা দেবে।

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(**{'arg1': 'one'})
# arg1 = one
# arg2 = 2
# arg3 = 3

func_default(**{'arg2': 'two', 'arg3': 'three'})
# arg1 = 1
# arg2 = two
# arg3 = three

# func_default(**{'arg1': 'one', 'arg4': 'four'})
# TypeError: func_default() got an unexpected keyword argument 'arg4'

পরিবর্তনশীল-দৈর্ঘ্য আর্গুমেন্ট সহ ফাংশনের জন্য

ভেরিয়েবল-লেন্থ আর্গুমেন্ট সেট করা থাকলে, আর্গুমেন্ট হিসাবে নির্দিষ্ট করা আর্গুমেন্টের নাম ব্যতীত অন্য একটি কী সহ যেকোন উপাদান ভেরিয়েবল-লেন্থ আর্গুমেন্টে চলে যায়।

def func_kwargs(arg1, **kwargs):
    print('arg1 =', arg1)
    print('kwargs =', kwargs)

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three'}

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three', 'arg4': 'four'}

func_kwargs(**{'arg1': 'one', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg3': 'three'}