আজকেই শেষ পর্ব পাইথন প্রোগ্রামিং সিরিজের। যদি কোর্স আইউটলাইনে বলা হয়েছিল শেষ পর্ব হবে “ফাইল ইনপুট/আউটপুট” নিয়ে কিন্তু সেটা একটু এডভান্স হয়ে যাচ্ছে দেখে আজকের পর্বে সেটা রাখছি না। তাই, এটাই হচ্ছে শেষ পর্ব “পাইথন প্রোগ্রামিং” এর। শুরু করা যাক তাহলেঃ-

জুস বানানো মেশিন এর কথা চিন্তা করুন, সেখানে এক পাশ দিয়ে আমরা ফল দেই অন্য পাশ দিয়ে জুস বের হয়ে আসে। যদি, আমরা আম দেই তাহলে আমের জুসই বের হবে আর আপেল দিলে আপেলের জুস। এটার ব্যতিক্রম হয় না।

ফাংশন ও ঠিক সেরকম আমরা একদিক দিয়ে একটা ইনপুট দেব অন্য পাশ দিয়ে আউটপুট পাবো। শুধু মাঝখানে বলে দিতে হয় যে কি আউটপুট পাবো। নিচে একটা উদাহরণ দেখে বোঝার চেষ্টা করি।

def square():
    print(3**2)

এখানে প্রথমে দিয়েছি def এটার মানে হল define। আমরা যখন ফাংশন লিখবো তখন প্রথমেই এটা দিয়ে কম্পিউটার কে বুঝিয়ে দেবো যে এটা ফাংশন। তারপরে square এটা হচ্ছে ফাংশনের নাম।

যেকোন নাম দিতে পারি তবে প্রথম অক্ষর যেন ছোট হাতের অক্ষর হয় এবং মাঝে কোন স্পেস হবে না তবে আন্ডারস্কোর (_) ব্যবহার করতে পারেন। তারপরে ব্র্যাকেট দিয়েছি এটা নিয়ম এবং শেষে দিয়েছি কোলন (:) ।

এবার নিচের লাইনে ইন্ডেনশন অর্থাৎ চার স্পেস দিয়ে লিখেছি print(3**2) বুঝতেই পারছেন 3 এর স্কয়ার প্রিন্ট করবে। এখন এই কোডটুকু রান করে দেখুন কিছু হয় কিনা!!

কিছুই হচ্ছে না তো তাই না?? হুম!! আসলে আমরা 3 এর স্কয়ার বানানোর মেশিন তৈরি করেছি কিন্তু সেটাকে চালু করিনি!! যেটাকে প্রোগ্রামিং এর ভাষায় বলে call করা।

এখন আমরা কল করতে নিচের লাইনে ইন্ডেনশন বাদে অর্থাৎ কোন স্পেস না দিয়ে লিখবো square() এখন রান করে দেখুন 9 প্রিন্ট হয়েছে।।

তাহলে কোড দাড়ালো এরকম

def square():
    print(3**2)

বুঝেছেন আশা করি।

এখন আমরা শুধু স্কয়ার প্রিন্ট করলাম কিন্তু ইউজার তো আর শুধু আমের জুস খাওয়ার জন্য মেশিন কিনবে না মানে শুধু 3 এর স্কয়ার প্রিন্ট করতে চাইবে না।

যেটা ইচ্ছা সেটার স্কয়ার প্রিন্ট দেবে। তাহলে তো একটা ইনপুট নিতে হবে তাইনা?? চলুন দেখি।

def square(num):
    print(num**2)
result = square(num = int(input("Type a num:- ")))
print(result)

এখানে প্রথমে def দিয়ে ফাংশন ডিফাইন করেছি তারপর square নামের ফাংশন দিয়েছি এবং ব্র্যাকেটের মধ্যে দিয়েছি num এটা একটা ভ্যারিয়েবল এর মতো তবে ফাংশনে এটাকে বলে প্যারামিটার।

এখন নিচের লাইনে চারটা স্পেস দিয়ে লিখেছি print(num**2) অর্থাৎ num ভ্যারিয়েবলের স্কয়ার প্রিন্ট দেবে। এখন নিচের লাইনে ইন্ডেনশন বাদে লিখেছি result = square(num = int(input(“Type a num:- “)))।

এখানে result ভ্যারিয়েবলের মধ্যে square ফাংশন কে কল করেছি এবং তার মধ্যে ওই num প্যারামিটারের ভ্যালু দিয়েছি int(input(“Type a num:- “)) অর্থাৎ ইনপুট নেবে এবং সেটাকে ইন্টেজার এ কনভার্ট করেছি। বুঝেছেন মনে হয়।।

এবং শেষে প্রিন্ট দিয়েছি। এটা তো বুঝেছেন মনে হয়!!

কিন্তু আউটপুটে কি খেয়াল করেছেন নিচে None লেখা আসছে?? এটা দূর করার জন্য ওই print(num**2) এর যায়গায় লিখুন return num**2 এখানে কোন ব্র্যাকেট দিবেন না।

কিন্তু, কেন দিলাম এই return ??

আসলে, আমরা কোন  ফাংশন এর ভেতর যখন return ইউজ করি তখন কোড ওখানেই স্টপ হয়ে যায়। মানে, return দিয়ে তারপর যদি আবার আরেকটা return বা print ব্যবহার করি তাহলেও পরেরগুলো কাজ করবে না।

বিঃদ্রঃ- প্যারামিটারকে আরগ্যুমেন্ট ও বলা হয়।

এখন আমরা দেখব প্যারামিটার কত রকম হয়।

প্যারামিটার কে মোট ৪ ভাগে ভাগ করা যায়।

  1. Required Parameter
  2. Key-Word Parameter
  3. Default Parameter
  4. Variable – length Parameter

Required Parameter:-

আগে নিচের কোড দেখে নেই।

def multiple(num, num2):
    return num*num2
result = multiple(5, 12)
print(result)

এখানে আমরা দুইটা প্যারামিটার গ্রহণ করেছি এবং সেই দুইটার ভ্যালু দিয়েছি 5 এবং 12 । শেষে এই দুইটার গুনফল রিটার্ন করেছে। কিন্তু, যদি আমরা একটা প্যারামিটার এর ভ্যালু দিতে ভুলে যায় তখন কি হবে??

def multiple(num, num2):
    return num*num2
result = multiple(5)
print(result)

এখানে num2 এর কোন ভ্যালু দেই নি। এখন রান করলে একটা ইরর খাবো। দেখেছেন ইরোরে বলছে Required Parameter missing। এটাই হল রিক্যুয়ার মানে আবশ্যিক। না দিলে ইরোর খাবো।

এখন দেখবো

Key-Word Parameter

এটা আমরা আসলে প্রথম ফাংশন দেখার সময় যেটা করেছি সেটাই। অর্থাৎ

def square(num):
    print(num**2)
result = square(num = 8)
print(result)

এখানে এই যে num = 8 ভ্যালু দিয়ে দিলাম এটাই Key-Word Parameter।

এখন,

Default Parameter

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

def multiple(num = 10, num2 = 3):
    return num*num2
result = multiple()
print(result)

এখানে যেমন আগে থেকি দিয়ে দিছি পরে আর দেয়া লাগে নি শুধু কল করেছি আর হয়ে গেছে।

এখন আগে থেকে দেয়ার পরেও যদি আমরা আবার দেই তাহলে কি হবে?? চলুন দেখি

def multiple(num = 10, num2 = 3):
    return num*num2
result = multiple(4, 15)
print(result)

এখানে আগে থেকে প্যারামিটারের ভ্যালু দেয়া ছিল 10 এবং 3 কিন্তু পরে আবারো দিয়েছি 4 এবং 15। যার ফলে num এর ভ্যালু রিপ্লেস হয়ে 4 হয়ে গেছে এবং num2 এর ভ্যালু হয়ে গেছে 15.

বুঝেছেন মনে হয়!!

এবারে তাহলে

Variable-length Parameter

আমরা মনে করুন এমন একটা ফাংশন লিখবো যেটা অনেক গুলা সংখ্যা ইনপুট নিবে এবং সবগুলোর যোগফল প্রিন্ট দেবে। আবারো বলছি আমরা কিন্তু জানিনা কতগুলো সংখ্যা ইনপুট নিতে হবে যা খুশি ইউজার দেবে। এজন্য কি করা যায়??

def addition(*number):
    res = 0
    for i in number:
        res += i
    return res
print(addition(1,2,3,4,5))

এখানে আমরা প্যারামিটার এর আগে * দিয়েছি। এটা দেয়ার ফলে আমরা আনলিমিটেড সংখ্যা ইনপুট দিতে পারছি। এবং তারপর ওই number প্যরামিটার থেকে আইটেম নিয়ে res ভ্যারিয়বলে যোগ করছি। এই যে প্যারামিটার number এটা কিন্তু টাপল হিসেবে রেডি হয়েছে। মানে, যখনই number এর আগে * দিয়েছি তখনই সেটা টাপল হয়ে গেছে। এবং পরে আইটেম যোগ করেছি।

এখন মনে করুন আমরা এমন করে দেব যে a=1, b=2, c=3 এরকম অর্থাৎ key-word parameter স্টাইল এ। তখন আমরা ওই number এর আগে শুধু দুইটা ** দিবো।

def addition(**number):
    print(type(number))
    res = 0
    for i in number:
        res += number[i]
    return res
print(addition(a=1, b=2, c=3, d=4, e=5))

এখানে দুইটা * দেয়াই টাপল এর বদলে এটা ডিকশোনারি হয়ে গেছে। ডিকশোনারির কি হয়েছে ওই a,b,c এবং ভ্যালু হয়েছে 1,2,3 । প্রথমেই কিন্তু, আমরা ওই number এর টাইপ প্রিন্ট করেছি এবং দেখেছি যে এটা ভ্যালু।।

এখন নিশ্চয় আমরা বুঝতে পেরেছি।।

এই হলো মোটামুটি পাইথন ফাংশন এর ব্যাসিক। কিন্তু, আমরা কেন ফাংশন ব্যবহার করব??

হুম্ম!! আপনাকে আসলে ততদিন এটা বোঝাতে পারবো না যে কোথায় কাজে লাগে। আপনি যখন বড় বড় বা মোটামুটি আকারের কোড লিখবেন তখন ফাংশন লাগবে। এবং ফাংশন কোডগুলোকে গুছিয়ে দেয় এবং সমস্ত কাজকে সহজ করে দেই।

এখন একটা সিক্রেট বলি, আসলে আপনি এখন একজন পাইথন প্রোগ্রামার হয়ে গেছেন।

তাহলে এখন নেক্সট ধাপ কী??

রকমারিতে গিয়ে অর্ডার করুন “সহজ ভাষায় পাইথন ৩ ২য় সংস্করণ” – মাক্সুদুর রহমান মাটিন। অথবা এই লিংক এ গিয়ে ফ্রিতে পরে ফেলুন বইটা https://www.python.maateen.me

এই বইটা বাংলাতে সেরা পাইথনের জন্য!! তারপরে কি করবেন?? Sololearn নামের একটা এপ আছে প্লে-স্টোরে সেটা ডাউনলোড করে নিন এবং শেখা শুরু করেন। ওখানে বেশ কিছু চ্যালেঞ্জ আছে কমপ্লিট করুন।

তারপরে, “পাইথন প্রোগ্রামিং ২য় খন্ড” — তামিম শাহরিয়ার সুবিন এই বইটা রকমারি থেকে কিনে ফেলুন। তাহলে, Python OOP and Regex সহ Web Crawling শিখতে পারবেন। OOP এবং regex যদিও মাটিন ভাই এর বই এ আছে তবুও এখানে আরো বিস্তারিত পাবেন। এটা শেষ হলে আপনি এখন পাইথন এডভান্সড প্রোগ্রামার। এখন আপনার পছন্দের ফিল্ডে কাজ করতে পারেন যেমনঃ- Desktop App Development, Automation, Web Development, Data Science সহ আরো অনেক কিছু।

আর, ইচ্ছা যদি হয় যেকোন ফিল্ড এর কাজ শেখার পাশাপাশি নতুন কিছু শেখার তাহলে শিখে ফেলুন ডাটা স্ট্রাকচার এবং এলগরিদম। এটা আবশ্যিক নয় কিন্তু সফটওয়্যার ইঞ্জিনিয়ার হতে চাইলে শেখা লাগবে। আর এর জন্য ভালো বাংলা বই হল “পাইথন দিয়ে প্রোগ্রামিং ৩য় খণ্ড” — তামিম শাহরিয়ার সুবিন।

আর, পাইথন নিয়ে যেকোন কথা বলতে পারেন আমার সাথে ফেসবুকে “https://facebook.com/shovon.0.ahmed

আর হ্যাঁ, আমার পাইথন প্রোগ্রামিং সিরিজের বেশ কিছু উদাহরণ নেয়া হয়েছে “সহজ ভাষায় পাইথন ৩” বই থেকে। আসলে, উনার বই টা অনেক ভালো তো তাই। আমিও শিখেছি ওখানে থেকেই। এবং কোর্স আউটলাইন নেয়া Udemy Course “The Modern Python 3 Bootcamp” এর স্টাইল এ।

তাহলে, আজকে এখানেই শুভ/অশুভ সমাপ্তি ঘটল “পাইথন প্রোগ্রামিং সিরিজের”। এখন আমি নতুন কোর্স শুরু করেছি “৭ দিনে শিখুন HTML” ।

আসসালামু আলাইকুম!! আমি শাহরিয়ার আহমেদ শোভন।।

14 thoughts on "পাইথন প্রোগ্রামিং – ফাংশন – শেষ পর্ব"

  1. NS Sabur NS Sabur Legend Author says:
    Good


  2. mdriaz.rs mdriaz.rs Contributor says:
    ভাই সবচাইতে মজার ব্যাপার কি জানেন আমি এখনো প্রথম চারটাই শেষ করতে পারি নাই। এর কারন আমাকে এখন পরিক্ষার জন্য পস্তুত হতে হচ্ছে আর আপনি শেষ করে দিচ্ছেন। যাই হোক আমি আস্তে আস্তেই শিখবো।
    1. Shahriar Ahmed Shovon Shahriar Ahmed Shovon Author Post Creator says:
      ব্যাসিক তো ভাই শেষ। হয়তো এডভান্স নিয়ে আবার আসবো।। ধীরে ধীরে ভালো করে শিখুন!!
  3. Md.Ariful Islam Md.Ariful Islam Author says:
    Nice post


  4. chader alo chader alo Contributor says:
    Aiii shob part gula porlam kintu kiahu bujlam na
    Pydorid sara r onn kno apps thakle suggests korun jeta ofline r use kora easy
    1. Shahriar Ahmed Shovon Shahriar Ahmed Shovon Author Post Creator says:
      প্লে স্টোরে খুজুন।

Leave a Reply