পাইথন প্রোগ্রামিং এ ফাংশন

এর আগে আমরা বিভিন্ন ফাংশন যেমন print, input ইত্যাদি ফাংশন ব্যবহার করেছি। এগুলো প্রোগ্রামিং ল্যাঙ্গুয়েজের এর সাথে দিয়ে দেওয়া হয়েছে যেন আমরা সহজেই প্রোগ্রাম লিখতে পারি। এ অধ্যায় শিখব কিভাবে নিজের প্রয়োজন মত ফাংশন লিখে ফেলা যায়।
ফাংশন হচ্ছে পুনরায় ব্যবহার যোগ্য কোড ব্লক। যা একটি নির্দিষ্ট কাজ করতে পারে। ফাংশন ভালো ভাবে জানলেই প্রোগ্রামিং এর একটা বিশাল অংশ শেখা শেষ হয়ে যায়। লেখা যায় নিজের ইচ্ছে মত কোড।

ফাংশন লেখার নিয়মঃ

একটা ফাংশন নিচের মত করে লেখা হয়ঃ

def function-name(Parameters):
    statements
    return

এখানে
• def দিয়ে ফাংশন শুরু করা হয়।
• ফাংশনের তো একটা নাম থাকতে হবে তাই না? যে নাম দিয়ে ফাংশনটিকে ডাকতে হবে। function-name হচ্ছে ফাংশনের নাম।
• Parameters হচ্ছে ফাংশন দিয়ে কি কি ডেটা পাস করবে। এখানে এক বা একাদিক Parameter পাস করা যেতে পারে। কোন কোন ফাংশনে কোন Parameter নাও থাকতে পারে। এটা নির্ভর করে কি ধরনের ফাংশন লিখা হচ্ছে তার উপর। একের অধিক Parameter থাকলে তাদেরকে কমা দিয়ে লিখতে হয়।
• কাজ শেষে ফাংশনটি কি রিটার্ন করবে তাই return দিয়ে পাস করা হয়। ফাংশন যদি কোন কিছু রিটার্ন না করে, তাহলে return 0 বা না লিখলেও হবে।
যেমন আমরা hello নামে একটা ফাংশন লিখব, যেটাকে কল করলে Hello World! প্রিন্ট করবে।

def hello():
    print ("Hello world!")

উপরের ফাংশনে কোন প্যারামিটার নেই, এবং ফাংশনটি কোন কিছু রিটার্ণ ও করবে না। শুধু Hello World! প্রিন্ট করবে। ফাংশন লেখার পর তা ব্যবহার করার জন্য কল করতে হয়।

hello()

কল করলে ফাংশনটি এক্সিকিউট হবে। সম্পুর্ণ প্রোগ্রামঃ

def hello():
    print ("Hello world!")

hello()

আমরা যত বার ইচ্ছে ততবার ফাংশটি কল করতে পারি। এটাই হচ্ছে ফাংশনের মূল সুবিধে। কোড গুলো বার বার না লেখে শুধু আমরা কল করব। আর তখন ফাংশনটি এক্সিকিউট হয়ে আমরা যা চাই, তা করে দিবেঃ

def hello():
 print ("Hello world!")
hello()
hello()
hello()

প্রোগ্রামটি রান করলে তিনবার Hello World! প্রিন্ট করবে।

ফাংশনের প্যারামিটার

আমাদের এমন ফাংশন লিখতে হতে পারে, যেখানে ফাংশনে কিছু ডেটা পাঠালে ঐ ডেটা আমাদের প্রসেস করে দিবে। আর এই ডেটা আমরা পাঠাবো প্যারামিটার হিসেবে।
আমরা add নামে একটা ফাংশন লিখব। যেটা প্যারামিটার হিসেবে দুইটা নাম্বার নিবে এবং রিটার্ন করবে নাম্বার দুটির যোগফলঃ

def add(a,b):
    return (a+b)
print (add(4,7))

এখানে add ফাংশনে আমরা দুইটা সংখ্যা প্যারামিটার হিসেবে দিচ্ছি। ফাংশনটি আমাদের ফেরত দিচ্ছে সংখ্যা দুইটির যোগফল।

যখন আমরা ফাংশনটি কল করেছি, তখন সংখ্যা দুটি পাস করে দিয়েছি, যে সংখ্যা দুইটির যোগ ফল আমরা পেতে চাই, add(4,7) দিয়ে। ফাংশনটি আমাদের ঐ সংখ্যা দুটি নিয়ে তা যোগ করে তা ফেরত দিয়েছে, return (a+b) দিয়ে। পরে তা প্রিন্ট করেছি।

এখন আমরা যতবার ইচ্ছে ততবার add ফাংশনটি কল করতে পারি। যাতে দুইটি সংখ্যা প্যারামিটার হিসেবে দিলে তা যোগ করে আমাদের পাঠিয়ে দিবে। যেন আমরা তা প্রিন্ট করতে পারি। আলাধা করে যোগ করতে হচ্ছে না।

def add(a,b):
    return (a+b)

print (add(4,7))
print (add(89,732))
print (add(55,999))

যা আমাদের আউটপুট দিবেঃ
11
821
1054
ডিফল্ট প্যারামিটারঃ
কোন ফাংশন লেখার সময় আমরা তার ডিফল্ট প্যারামিটার সেট করে দিতে পারি। ডিফল্ট প্যারামিটার সেট করে দেওয়া হলে যদি ফাংশন কল করার সময় ঐ প্যারামিটারের আইটেমের জন্য কোন ভ্যালু সেট করে দেওয়া না হয়, তাহলে ফাংশন ডিফল্ট ভ্যালুটি ব্যবহার করবে।

 
def max(a,b=0):

    if(a>b):
        return format(a) +" is greater than " + format(b)
    elif (a<b):
        return format(a) + " is less than " + format(b)
    elif(a==b):
        return format(a) + " and " + format(b) + " both are same"

print(max(6,7))
print(max(9))
print(max(5,5))

যা আউটপুট দিবেঃ
6 is less than 7
9 is greater than 0
5 and 5 both are same
উপরের প্রোগ্রামটি দেখি। আমরা দুইটা সংখ্যার মধ্যে বড় ছোট নির্ণয়ের জন্য একটা ফাংশন লিখেছি। যখন ফাংশনে দ্বিতীয় প্যারামিটার হিসেবে কোন ভ্যালু পাঠাই নি, তখন ডিফল্ট ভ্যালু 0 ব্যবহার করেছে।

ফাংশন থেকে একাধিক ভ্যালু রিটার্ন
এর আগের প্রোগ্রামে দেখেছি ফাংশন থেকে কিভাবে একটা ভ্যালু রিটার্ন করা যায়। পাইথনে ফাংশন থেকে একাধিক ভ্যালু রিটার্ন করা যায়। নিচের প্রোগ্রামটি দেখিঃ

def binary(a, b):
    return bin(a), bin(b)

print(binary(12, 14))

এখানে একটি ফাংশন লিখেছি, যেখানে দুইটা সংখ্যা পাঠালে ঐ সংখ্যা দুইটির বাইনারি ভ্যালু রিটার্ণ করবে। যদিও দুইটা একসাথে টাপল আকারে প্রিন্ট করবে। আমরা চাইলে প্রতিটা রিটার্ণ ভ্যালু আলাদা আলাদা এক্সেস করতে পারিঃ

def binary(a, b):
    return bin(a), bin(b)
x,y = (binary(12, 14))
print(x)

এখানে রিটার্ণ ভ্যালু গুলো x এবং y তে আলাদা আলাদা ভাবে এসাইন হবে। আমরা এরপর যে কোন ভ্যালু প্রিন্ট করে দেখতে পারি।

আরো দুই একটা ফাংশন দেখিঃ

আমরা একটা ফাংশন লিখব। যেটা ব্যবহারকারী কে তার নাম জিজ্ঞেস করবে। এবং তা ফাংশনে পাস করব। ফাংশন পরে ব্যবহার কারীকে হ্যালো জানাবেঃ

def hello(name):
    print ("Hello " + name)

your_name = input("Enter  your Name: ")
hello(your_name)

উপরের প্রোগ্রামে আমরা hello নামে একটা ফাংশন লিখেছি। ব্যবহারকারী থেকে আমরা তার নাম ইনপুট নিয়েছি। এরপর hello ফাংশনে তা পাস করেছি, hello(your_name) দিয়ে। hello ফাংশন আমাদের দেওয়া নামকে হ্যালো জানিয়েছে।
এবার আমরা আরেকটা ফাংশন লিখব। যেটা একটি নাম্বার জোড় না বিজোড় তা বলে দিবে। ব্যবহারকারী থেকে একটা নাম্বার ইনপুট নিব। তারপর তা ফাংশনে পাস করব। ফাংশন আমাদের বলে দিবে নাম্বারটি জোড় না বিজোড়ঃ

def checkNumber(n):
    if n%2 == 0:
        print ("It's Even number")
    else: print ("It's Odd number")    

number = int (input("Enter  a  number to check: "))
checkNumber(number)

এভাবে আমরা আমাদের প্রয়োজন মত যে কোন ফাংশন লিখে ফেলতে পারি।

Leave a Reply