পাইথনে ফাংশনসমূহ

পাইথনে ফাংশনসমূহ

এই প্রবন্ধটি পাইথনে ফাংশনসমূহ ব্যাখ্যা করে।

YouTube Video

পাইথনে ফাংশনসমূহ

পাইথনে ফাংশনসমূহ পুনর্ব্যবহারযোগ্য কোড ব্লক সংজ্ঞায়ন করার জন্য একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনার প্রোগ্রাম সংগঠিত ও সহজতর করতে সহায়ক হয় এবং প্রয়োজন অনুসারে তাদের ডাকা যায়। ফাংশন ব্যবহার করলে কোডের পাঠযোগ্যতা উন্নত হয় এবং DRY নীতি (Dont Repeat Yourself, একই কোড বারবার না লেখার নীতি) অনুসরণ করা যায়।

ফাংশন সংজ্ঞায়িত করা

def কীওয়ার্ড ব্যবহার করে ফাংশন সংজ্ঞায়িত করা হয়। মৌলিক সিনট্যাক্স নিম্নরূপ:।

1def function_name(arg1, arg2, ..., argN):
2    """docstring (A brief description of the function)"""
3    processing
4    return return_value

উদাহরণস্বরূপ, দুইটি সংখ্যার যোগফল নির্ণয় করতে একটি ফাংশন সংজ্ঞায়িত করতে হলে আপনি লিখবেন:।

1def add(x, y):
2    """A function that adds two numbers and returns the result"""
3    return x + y

ফাংশন ডাকা

একটি সংজ্ঞায়িত ফাংশন ডেকে নিম্নরূপ ব্যবহৃত হতে পারে:।

1result = add(3, 4)
2print(result)  # Output: 7

ফাংশনের উপাদানসমূহ

  1. ফাংশনের নাম

    • ফাংশনটি ডাকার সময় ব্যবহৃত নাম।
  2. আর্গুমেন্ট (প্যারামিটার)

    • ফাংশন ডাকার সময় পাঠানো ডেটা গ্রহণ করে এমন ভেরিয়েবলের নাম। আপনি শূন্য বা একাধিক আর্গুমেন্ট সংজ্ঞায়িত করতে পারেন।
  3. ডকুমেন্টেশন স্ট্রিং (ডকস্ট্রিং)

    • ফাংশনের উদ্দেশ্য ও ব্যবহার বর্ণনা করে এমন একটি স্ট্রিং। ঐচ্ছিক।
  4. ফাংশনের মূল অংশ

    • উঁচু করে লেখা ব্লক যেখানে ফাংশনের কার্যকর নির্দেশাবলী থাকে।
  5. রিটার্ন মান

    • return স্টেটমেন্ট ব্যবহার করে কলারকে ফিরিয়ে দেওয়া মান। যদি return বাদ দেওয়া হয়, তবে ডিফল্ট হিসেবে None ফেরত আসে।

আর্গুমেন্টের ধরণসমূহ

পাইথনে, একাধিক ধরণের আর্গুমেন্ট রয়েছে।

  1. স্থিতিগত আর্গুমেন্ট
    • ফাংশনে আর্গুমেন্ট পাঠানোর সাধারণ উপায়।
  2. ডিফল্ট আর্গুমেন্ট
    • ফাংশন কল করার সময় তা বাদ দেওয়া যায়, এজন্য আর্গুমেন্টে ডিফল্ট মান নির্ধারণ করা হয়।
1def greet(name, message="Hello"):
2    print(f"{message}, {name}")
3
4greet("Alice")  # "Hello, Alice"
5greet("Bob", "Good morning")  # "Good morning, Bob"
  1. ভেরিয়েবল-দৈর্ঘ্য আর্গুমেন্ট
    • args একাধিক অবস্থানভিত্তিক আর্গুমেন্ট টুপল হিসেবে গ্রহণ করে, এবং kwargs সেগুলো ডিকশনারি হিসেবে গ্রহণ করে।
1def func(*args, **kwargs):
2    print("args:", args)
3    print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}

সঠিকভাবে ফাংশন ব্যবহার করে, আপনি আরও কার্যকর এবং দক্ষতার সাথে পাইথন প্রোগ্রাম লিখতে পারেন।

পাইথনে ল্যাম্বডা ফাংশন

পাইথনে, lambda ফাংশন অজ্ঞাতনামা এবং সংক্ষিপ্ত ফাংশন সংজ্ঞায়িত করতে ব্যবহৃত হয়। সাধারণ def কীওয়ার্ডের সাথে সংজ্ঞায়িত ফাংশনের বিপরীতে, lambda আপনাকে সংক্ষিপ্ত, একলাইন ফাংশন তৈরি করার অনুমতি দেয়। এখানে, আমরা পাইথনে lambda ফাংশন বিস্তারিতভাবে ব্যাখ্যা করব।

lambda ফাংশনের বুনিয়াদি

lambda ফাংশন, যাকে অজ্ঞাতনামা ফাংশনও বলা হয়, এটি অস্থায়ী ফাংশন সংজ্ঞায়িত করতে ব্যবহৃত হয় যাদের কোনো নাম নেই, নাম থেকেই তা বোঝা যায়। মৌলিক সিনট্যাক্স নিম্নরূপ:।

1lambda arguments: expression
  • আর্গুমেন্ট
    • একটি ফাংশনের আর্গুমেন্ট নির্ধারণ করে। কমা দিয়ে আলাদা করে একাধিক আর্গুমেন্ট উল্লেখ করা যেতে পারে।
  • এক্সপ্রেশন
    • আর্গুমেন্টের উপর ভিত্তি করে মূল্যায়িত একটি এক্সপ্রেশন। এক্সপ্রেশনের ফলাফল ফাংশনের রিটার্ন মান হয়ে যায়।

উদাহরণস্বরূপ, নিম্নলিখিত কোড দুটি সংখ্যা যোগ করে এমন একটি lambda ফাংশন সংজ্ঞায়িত করে এবং কার্যকর করে।

1add = lambda x, y: x + y
2print(add(5, 3))  # Output: 8

এই উদাহরণে, lambda x, y: x + y হল একটি lambda ফাংশন যা দুটি আর্গুমেন্ট, x এবং y, গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।

lambda ফাংশনের ব্যবহার ক্ষেত্র

lambda ফাংশনগুলি সেই পরিস্থিতিতে কার্যকর হয় যেখানে আপনাকে তৎক্ষণাত একটি সহজ ফাংশন সংজ্ঞায়িত করতে হয়। তারা বিশেষ করে নিম্নলিখিত ক্ষেত্রে সাধারণ:।

  1. যখন ফাংশনে আর্গুমেন্ট হিসেবে পাস করা হয়

    • উচ্চ-অর্ডার ফাংশনে (যে ফাংশনগুলি অন্যান্য ফাংশনকে আর্গুমেন্ট হিসাবে নেয়) ছোট, অস্থায়ী ফাংশন পাস করার সময় এটি দরকারী।
  2. লিস্ট সসার্টিংয়ের কী নির্ধারণ করার সময়

    • এগুলো sort() বা sorted() এর মতো ফাংশনে সসার্টিং ক্রাইটেরিয়া (কী) নির্ধারণ করার জন্য সুবিধাজনক।

উচ্চ-অর্ডার ফাংশনের উদাহরণ ব্যবহার

উচ্চ-অর্ডার ফাংশনের সাধারণ উদাহরণ অন্তর্ভুক্ত করে map(), filter(), এবং reduce()। এই ফাংশনগুলি অন্যান্য ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে এবং সেগুলি লিস্টের মতো ক্রমগুলিতে প্রয়োগ করে।

1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared)  # Output: [1, 4, 9, 16, 25]

এই উদাহরণে, একটি lambda ফাংশন map() ফাংশনে পাস করা হয়েছে একটি লিস্টে প্রতিটি সংখ্যার বর্গমূল করার জন্য।

তালিকা সজ্জার উদাহরণগুলি ব্যবহার করা

lambda ফাংশনটি কখনও কখনও তালিকা সাজানোর সময় একটি কাস্টম কী নির্দিষ্ট করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি দ্বিতীয় উপাদানের উপর ভিত্তি করে একটি টুপলের তালিকা সাজায়।

1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

এই উদাহরণে, একটি lambda ফাংশন টুপলগুলিকে তাদের দ্বিতীয় উপাদান (একটি স্ট্রিং) অনুযায়ী সাজানোর জন্য ব্যবহার করা হয়।

filter() এবং lambda

filter() ফাংশন একটি প্রদত্ত শর্তের উপর ভিত্তি করে তালিকা (অথবা অন্য iterable) এর উপাদানগুলি ফিল্টার করতে ব্যবহৃত হয়।

1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers)  # Output: [2, 4, 6, 8]

এই উদাহরণে, একটি তালিকায় বিদ্যমান জোড় নম্বরগুলি ফিল্টার করে একটি নতুন তালিকা তৈরি করা হয়।

lambda এবং reduce()

reduce() ফাংশনটি একটি তালিকাকে একটি একক মানে সীমাবদ্ধ করতে ব্যবহৃত হয়। এটি lambda ফাংশন ব্যবহার করে সহজেই প্রয়োগ করা যেতে পারে।

1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product)  # Output: 120

এই উদাহরণে, তালিকার সমস্ত উপাদান একসাথে গুণ করে একটি ফল তৈরি করা হয়।

জটিল lambda ফাংশন ব্যবহারের থেকে বিরত থাকুন

lambda ফাংশনের সুবিধা এর সংক্ষিপ্ততা, তবে এটি জটিল লজিক বাস্তবায়নে ব্যবহৃত হলে পড়তে কঠিন হয়ে যায়। অতএব, এক লাইনে প্রকাশ করা যায় এমন সাধারণ কার্যক্রমের জন্য এগুলোর ব্যবহার উপযুক্ত। জটিল কার্যক্রমের জন্য, def ব্যবহার করে একটি ফাংশন সংজ্ঞায়িত করা বেশি পঠনযোগ্য এবং পরিচালনাযোগ্য।

উদাহরণস্বরূপ, নিম্নলিখিতটির মতো জটিল lambda ফাংশন ব্যবহার থেকে আপনাকে বিরত থাকা উচিত।

1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)

এই ক্ষেত্রে, নিচে দেখানো হিসাবে def দিয়ে সংজ্ঞায়িত একটি ফাংশন ব্যবহার করা ভালো।

1def complex_func(x, y):
2    if x > y:
3        return x * 2 + y
4    else:
5        return x + y * 2

উপসংহার

Python এর lambda ফাংশনগুলি অস্থায়ী, সংক্ষিপ্ত ফাংশন সংজ্ঞায়িত করার জন্য একটি সুবিধাজনক সরঞ্জাম। এগুলি প্রায়ই উচ্চ-অর্ডার ফাংশন বা তালিকা কার্যক্রমে নির্দিষ্ট শর্তগুলো সংক্ষিপ্তভাবে সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। যাইহোক, lambda ফাংশনগুলি সাধারণ কাজের জন্য সীমিত করা উচিত এবং জটিল লজিকের জন্য def ফাংশনগুলি পছন্দ করা উচিত।

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video