Skip to content

Latest commit

 

History

History
136 lines (101 loc) · 12.7 KB

quick-tips.md

File metadata and controls

136 lines (101 loc) · 12.7 KB

কুইক টিপস

এই টিপস গুলো মনে রাখলে পাইথন শিখতে সুবিধা হবে । এগুলো আমাদের দৈনন্দিন জীবনে পাইথন ডেভেলপমেন্টের সময় নানাভাবে সাহায্য করবে ।

ইন্টারএক্টিভ শেল

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

অনেকেই এটাকে ক্যালকুলেটর হিসেবে ব্যবহার করে থাকে :)

$ python
Python 3.5.0 (v3.5.0:xxxxxxxxx, Sep 13 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> my_list = [1, 2, 3, 5, 90]
>>> for x in my_list:
...     print(x)
...
1
2
3
5
90
>>>

type(), dir(), help() ফাংশন এর ব্যবহার

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

>>> type(my_list)
<class 'list'>
>>> type(my_list[0])
<class 'int'>
>>>

উপরের অংশ যদি মনযোগ দিয়ে লক্ষ্য করে থাকেন তাহলে দেখবেন type() ফাংশনটি কোন চলক বা নামের ধরন বা টাইপ বলে দেয় । যেমনঃ type(my_list) দিলে বোঝা গেল এটি একটি লিস্ট । type(my_list[0]) দিলে দেখা গেল এই লিস্টের প্রথম আইটেমের টাইপ ইন্টিজার । কোন ভ্যারিয়েবল এর টাইপ জানা না থাকলে এটি ব্যবহার করে জেনে নিতে পারি এটি কি টাইপ । এরপর সেই টাইপ অনুযায়ী পরবর্তী অপারেশন চালানো যায় ।

dir() কমান্ডটি কোন অবজেক্টের ইন্সপেকশনে ব্যবহার করা হয় । এই ফাংশনটি ব্যবহার করে আমরা ঐ অবজেক্টের বিভিন্ন প্রোপার্টি এবং মেথডের নাম জানতে পারি ।

>>> details = dir(my_list)
>>> type(details)
<class 'list'>
>>> len(details)
45
>>> details
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> 'extend' in details
True
>>>

dir() ফাংশনটি একটি লিস্ট রিটার্ন করে । এই লিস্টটি আমরা প্রোগ্রাম্যাটিক্যালি আমাদের প্রয়োজনে ব্যবহার করতে পারি । বিশেষ করে যখন আমরা জানি না একটি ভ্যারিয়েবলে থাকা অবজেক্টটির বৈশিষ্ট্য কি বা এটি কি করতে পারে । এই লিস্ট দেখে আমরা কিছু ধারনা পাই এই অবজেক্ট এর সাধারন ব্যবহার সম্পর্কে ।

help() ফাংশনটি আমাদের কোন অবজেক্ট সমপর্কে সাহায্যকারী তথ্য সরবরাহ করে । মূলত এটি ইন্টার এ্যাকটিভ শেল থেকে সহজেই ডকুমেন্টেশন পড়তে সহায়তা করে থাকে -

>>> help(list)

এই কমান্ডের মাধ্যমে আমরা লিস্ট টাইপ সম্পর্কে বিস্তারিত জানতে পারবো ।

কমান্ড লাইনে -i আর্গুমেন্ট এর ব্যবহার

$ python -i my_file.py

পাইথন কমান্ড লাইনে -i আর্গুমেন্ট এর ভ্যালু হিসেবে কোন পাইথন ফাইল নেইম পাস করলে পাইথন প্রথমে ঐ ফাইল টি রান করে এবং ফলাফল সহ ইন্টারএ্যাক্টিভ শেল চালু করে দেয় । ফলে আপনার ঐ ফাইলে আপনি যে সব অপারেশন চালাবেন, সেগুলো নিয়ে এই ইন্টারএ্যাক্টিভ শেলে কাজ করতে পারবেন । যেমন: পাইথন ফাইলটির মধ্যে ডিফাইন করা ভ্যারিয়েবলগুলো আপনি এই শেলে পাবেন । ডিবাগিং এবং দ্রুত প্রটোটাইপিং এটি বেশ কাজে দেয় ।

কমেন্টস

যে কোন প্রোগ্রামিং ল্যাঙ্গুয়েজেই কমেন্ট অত্যন্ত গুরুত্বপূর্ন বিষয় । কমেন্ট হল কোডের সেই অংশ বিশেষ যা ইন্টারপ্রেটার এক্সিকিউট করবে না । কমেন্ট লেখা হয় মূলত যারা পরবর্তীতে এই কোড পড়বেন তাদের জন্য । প্রোগ্রামের বিভিন্ন বিষয় সোর্স কোডের মধ্যেই ব্যখ্যা করা হয় কমেন্টের মাধ্যমে ।

পাইথনে আমরা পাউন্ড বা হ্যাশ ক্যারেক্টার ব্যবহার করে কমেন্ট লিখে থাকি । যেমন:

# this is a comment
print("this is not")

# my cool add function
# adds a and b
# then returns the value
def add(a,b):
    return a+b # everything after the pound sign is  a comment

দেখা যাচ্ছে – কমেন্ট মাল্টিপল লাইনে হতে পারে, শুধু লাইনের শুরুতে পাউন্ড চিহ্ন বসালেই হল । একই লাইনে কিছু কোড এর পরে পাউন্ড সাইন ব্যবহার করে কমেন্ট লেখা যায় । তবে খেয়াল রাখা দরকার, একবার পাউন্ড সাইন দিয়ে কমেন্ট লেখা শুরু করলে তারপর থেকে ঐ লাইনের বাকিটা কমেন্ট হিসেবে বিবেচিত হবে । পাইথনে কমেন্ট শেষ করার ব্যবস্থা নেই, তাই সি বা জাভার মত কমেন্ট ব্লকও (/…./) সম্ভব না ।

ইন্ডেন্টেশন

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

if True:
....print("hello world")
....print("Hi there")
....print("4 space indentation")

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

if True:
....print("hello world")
....print("Hi there")
....print("4 space indentation")
else:
....print("another block")
....print("same indentation as of the if block")
....print("but terminated with the else condition")

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

এবার দেখি নেস্টেড ব্লক:

if True:
....print("hello world")
....print("Hi there")
....print("4 space indentation")
....if True:
........print("nested block")
........print("8 spaces")
....print("back to prev block")

এখানে আমরা স্পেইস এর পরিমান বাড়িয়ে দিয়ে নেস্টেড ব্লক তৈরি করলাম । একইভাবে স্পেইস এর পরিমান সমান পরিমানে কমিয়ে নিয়ে আগের ব্লকে ফিরে গেলাম ।

পাইথনের হোয়াইটস্পেস বেইজড ইন্ডেন্টেশন বুঝতে প্রথম প্রথম বেশ কষ্ট হয় । এজন্য দরকার অনুশীলন । নিজে নিজে ইন্ডেন্ট করার চেষ্টা করুন । গুগলে অনুসন্ধান করে দেখতে পারেন পাইথনের ইন্ডেন্টেশন নিয়ে ।