পাইথন পরিচিতি

ভূমিকা

গুগলের পাইথন অনলাইন টিউটোরিয়ালে স্বাগতম। এটি অভ্যন্তরীণভাবে দেওয়া প্রাথমিক পাইথন কোর্সের উপর ভিত্তি করে। সেটআপ পৃষ্ঠায় উল্লিখিত হিসাবে, এই উপাদানটি পাইথন 3 কভার করে।

আপনি যদি একটি সঙ্গী MOOC কোর্স খুঁজছেন, Udacity এবং Coursera থেকে চেষ্টা করুন ( প্রোগ্রামিং [শিশুদের] পরিচিতি বা পাইথনের ভূমিকা )। অবশেষে, আপনি যদি ভিডিও না দেখে স্ব-গতিসম্পন্ন অনলাইন শিক্ষার সন্ধান করেন, তাহলে এই পোস্টের শেষে তালিকাভুক্তগুলি চেষ্টা করুন — প্রতিটি বৈশিষ্ট্য শেখার বিষয়বস্তুর পাশাপাশি একটি পাইথন ইন্টারেক্টিভ ইন্টারপ্রেটার যার সাথে আপনি অনুশীলন করতে পারেন। এই "দোভাষী" আমরা উল্লেখ কি? আপনি পরবর্তী বিভাগে খুঁজে পাবেন!

ভাষা পরিচিতি

পাইথন একটি গতিশীল, ব্যাখ্যা করা (বাইটকোড-সংকলিত) ভাষা। সোর্স কোডে ভেরিয়েবল, প্যারামিটার, ফাংশন বা পদ্ধতির কোনো প্রকার ঘোষণা নেই। এটি কোডটিকে সংক্ষিপ্ত এবং নমনীয় করে তোলে এবং আপনি সোর্স কোডের কম্পাইল-টাইম টাইপ চেকিং হারাবেন। পাইথন রানটাইমে সমস্ত মানগুলির প্রকারগুলিকে ট্র্যাক করে এবং ফ্ল্যাগ কোডগুলিকে ট্র্যাক করে যা এটি চালানোর সময় বোঝা যায় না৷

পাইথন কোড কিভাবে কাজ করে তা দেখার একটি চমৎকার উপায় হল পাইথন ইন্টারপ্রেটার চালানো এবং সরাসরি এতে কোড টাইপ করা। আপনার যদি কখনও একটি প্রশ্ন থাকে, "আমি যদি একটি list একটি int যোগ করি তাহলে কি হবে?" শুধু পাইথন ইন্টারপ্রেটারে এটি টাইপ করা একটি দ্রুত এবং সম্ভবত কী ঘটে তা দেখার সেরা উপায়। (সত্যিই কি ঘটে তা দেখতে নীচে দেখুন!)

$ python3        ## Run the Python interpreter
Python 3.X.X (XXX, XXX XX XXXX, XX:XX:XX) [XXX] on XXX
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 6       ## set a variable in this interpreter session
>>> a           ## entering an expression prints its value
6
>>> a + 2
8
>>> a = 'hi'    ## 'a' can hold a string just as well
>>> a
'hi'
>>> len(a)      ## call the len() function on a string
2
>>> a + len(a)  ## try something that doesn't work
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can only concatenate str (not "int") to str
>>> a + str(len(a))  ## probably what you really wanted
'hi2'
>>> foo         ## try something else that doesn't work
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'foo' is not defined
>>> ^D          ## type CTRL-d to exit (CTRL-z in Windows/DOS terminal)

আপনি পাইথন টাইপ করার পরে এবং >>> প্রম্পটের আগে দুটি লাইন পাইথন প্রিন্ট করে আপনি পাইথনের কোন সংস্করণটি ব্যবহার করছেন এবং এটি কোথায় তৈরি করা হয়েছিল সে সম্পর্কে আপনাকে বলে। যতক্ষণ না মুদ্রিত প্রথম জিনিসটি "পাইথন 3।", এই উদাহরণগুলি আপনার জন্য কাজ করা উচিত।

আপনি উপরে দেখতে পাচ্ছেন, ভেরিয়েবল এবং অপারেটরগুলির সাথে পরীক্ষা করা সহজ। এছাড়াও, ইন্টারপ্রেটার থ্রো করে, বা পাইথন ভাষায় "উত্থাপন" করে, একটি রানটাইম ত্রুটি যদি কোডটি এমন একটি ভেরিয়েবল পড়ার চেষ্টা করে যার কোনো মান নির্ধারণ করা হয়নি। C++ এবং জাভার মত, পাইথন কেস সংবেদনশীল তাই "a" এবং "A" ভিন্ন ভেরিয়েবল। একটি লাইনের শেষ একটি স্টেটমেন্টের শেষ চিহ্নিত করে, তাই C++ এবং Java থেকে ভিন্ন, Python-এর প্রতিটি স্টেটমেন্টের শেষে সেমিকোলনের প্রয়োজন হয় না। মন্তব্য একটি '#' দিয়ে শুরু হয় এবং লাইনের শেষ পর্যন্ত প্রসারিত হয়।

পাইথন সোর্স কোড

পাইথন সোর্স ফাইলগুলি ".py" এক্সটেনশন ব্যবহার করে এবং একে "মডিউল" বলা হয়। একটি পাইথন মডিউল hello.py এর সাথে, এটি চালানোর সবচেয়ে সহজ উপায় হল শেল কমান্ড "python hello.py Alice" যা পাইথন ইন্টারপ্রেটারকে কল করে hello.py এ কোড চালানোর জন্য, এটিকে কমান্ড লাইন আর্গুমেন্ট "Alice" পাস করে। কমান্ড-লাইন থেকে পাইথন চালানোর সময় আপনার কাছে থাকা বিভিন্ন বিকল্পের অফিসিয়াল ডক্স পৃষ্ঠাটি দেখুন।

এখানে একটি খুব সাধারণ hello.py প্রোগ্রাম রয়েছে (লক্ষ্য করুন যে কোডের ব্লকগুলি কোঁকড়া ধনুর্বন্ধনীর পরিবর্তে ইন্ডেন্টেশন ব্যবহার করে কঠোরভাবে সীমাবদ্ধ করা হয়েছে — এই বিষয়ে পরে আরও কিছু!):

#!/usr/bin/python3

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main() function
def main():
    print('Hello there', sys.argv[1])
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
    main()

কমান্ড লাইন থেকে এই প্রোগ্রাম চালানোর মত দেখাচ্ছে:

$ python3 hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python3' first (Unix)
Hello there Alice

আমদানি, কমান্ড-লাইন আর্গুমেন্ট এবং len()

পাইথন ফাইল বা "মডিউল"-এর সবচেয়ে বাইরের বিবৃতিগুলি এটির এক-কালীন সেটআপ করে — এই স্টেটমেন্টগুলি উপরে থেকে নীচে চলে যায় যখন মডিউলটি প্রথম কোথাও আমদানি করা হয়, এর ভেরিয়েবল এবং ফাংশন সেট আপ করে। একটি পাইথন মডিউল সরাসরি চালানো যেতে পারে — উপরের python3 hello.py Bob এর মতো — অথবা এটি অন্য কোনো মডিউল দ্বারা আমদানি ও ব্যবহার করা যেতে পারে। যখন একটি পাইথন ফাইল সরাসরি চালানো হয়, বিশেষ ভেরিয়েবল "__name__" "__main__" এ সেট করা হয়। তাই, বয়লারপ্লেট থাকা সাধারণ ব্যাপার if __name__ ==... মডিউলটি সরাসরি চালানো হলে একটি main() ফাংশন কল করার জন্য উপরে দেখানো হয়, কিন্তু যখন মডিউলটি অন্য কোনো মডিউল দ্বারা আমদানি করা হয় তখন নয়।

একটি স্ট্যান্ডার্ড পাইথন প্রোগ্রামে, তালিকা sys.argv স্ট্যান্ডার্ড পদ্ধতিতে কমান্ড-লাইন আর্গুমেন্ট থাকে যেখানে sys.argv[0] প্রোগ্রাম নিজেই, sys.argv[1] প্রথম আর্গুমেন্ট ইত্যাদি। আপনি যদি argc , বা আর্গুমেন্টের সংখ্যা সম্পর্কে জানেন, তাহলে আপনি len(sys.argv) দিয়ে পাইথন থেকে এই মানটি অনুরোধ করতে পারেন, ঠিক যেমন আমরা একটি স্ট্রিংয়ের দৈর্ঘ্য অনুরোধ করার সময় উপরের ইন্টারেক্টিভ ইন্টারপ্রেটার কোডে করেছি। সাধারণভাবে, len() আপনাকে বলতে পারে একটি স্ট্রিং কত লম্বা, তালিকা এবং টিপলে উপাদানের সংখ্যা (অন্য একটি অ্যারের মতো ডেটা স্ট্রাকচার), এবং অভিধানে কী-মান জোড়ার সংখ্যা।

ব্যবহারকারী-সংজ্ঞায়িত ফাংশন

পাইথনের ফাংশনগুলি এইভাবে সংজ্ঞায়িত করা হয়েছে:

# Defines a "repeat" function that takes 2 arguments.
def repeat(s, exclaim):
    """
    Returns the string 's' repeated 3 times.
    If exclaim is true, add exclamation marks.
    """

    result = s + s + s # can also use "s * 3" which is faster (Why?)
    if exclaim:
        result = result + '!!!'
    return result

এছাড়াও লক্ষ্য করুন যে লাইনগুলি যেগুলি ফাংশন বা if-statement তৈরি করে সেগুলিকে একই স্তরের ইন্ডেন্টেশন দ্বারা গোষ্ঠীবদ্ধ করা হয়। আমরা + অপারেটর ব্যবহার করে স্ট্রিংগুলি পুনরাবৃত্তি করার 2টি ভিন্ন উপায়ও উপস্থাপন করেছি যা আরও ব্যবহারকারী-বান্ধব, কিন্তু * এছাড়াও কাজ করে কারণ এটি পাইথনের "রিপিট" অপারেটর, যার অর্থ '-' * 10 দেয় '----------' , একটি অনস্ক্রিন "লাইন" তৈরি করার একটি ঝরঝরে উপায়৷ কোড মন্তব্যে, আমরা ইঙ্গিত দিয়েছি যে * + এর চেয়ে দ্রুত কাজ করে, কারণ হল যে * ফলে বস্তুর আকার একবার গণনা করে যেখানে + দিয়ে, সেই গণনাটি প্রতিবার + বলা হয়। + এবং * উভয়কেই "ওভারলোডেড" অপারেটর বলা হয় কারণ তারা স্ট্রিং (এবং অন্যান্য ডেটা প্রকার) এর জন্য সংখ্যা বনাম বিভিন্ন জিনিস বোঝায়।

def কীওয়ার্ড বন্ধনীর মধ্যে তার পরামিতি সহ ফাংশনটিকে সংজ্ঞায়িত করে এবং এর কোড ইন্ডেন্ট করে। একটি ফাংশনের প্রথম লাইনটি একটি ডকুমেন্টেশন স্ট্রিং ("ডকস্ট্রিং") হতে পারে যা ফাংশনটি কী করে তা বর্ণনা করে। ডকস্ট্রিং একটি একক লাইন হতে পারে, বা উপরের উদাহরণের মতো একটি বহু-লাইন বিবরণ হতে পারে। (হ্যাঁ, সেগুলি হল "ট্রিপল কোট," পাইথনের অনন্য বৈশিষ্ট্য!) ফাংশনে সংজ্ঞায়িত ভেরিয়েবলগুলি সেই ফাংশনের স্থানীয়, তাই উপরের ফাংশনের "ফলাফল" অন্য ফাংশনের "ফলাফল" ভেরিয়েবল থেকে আলাদা। return স্টেটমেন্ট একটি আর্গুমেন্ট নিতে পারে, যে ক্ষেত্রে সেটিই কলারের কাছে ফেরত দেওয়া মান।

এখানে এমন কোড রয়েছে যা উপরের পুনরাবৃত্তি() ফাংশনটিকে কল করে, এটি যা প্রদান করে তা মুদ্রণ করে:

def main():
    print(repeat('Yay', False))      ## YayYayYay
    print(repeat('Woo Hoo', True))   ## Woo HooWoo HooWoo Hoo!!!

রান টাইমে, ফাংশনগুলিকে কল করার আগে একটি "def" কার্যকর করার দ্বারা সংজ্ঞায়িত করা আবশ্যক। এটি একটি প্রধান() ফাংশনকে ফাইলের নীচের দিকে ডিফ করার জন্য এটির উপরে যে ফাংশনগুলিকে কল করে তা সাধারণ৷

ইন্ডেন্টেশন

একটি অস্বাভাবিক পাইথন বৈশিষ্ট্য হল যে কোডের একটি অংশের হোয়াইটস্পেস ইন্ডেন্টেশন এর অর্থকে প্রভাবিত করে। বিবৃতিগুলির একটি যৌক্তিক ব্লক যেমন যেগুলি একটি ফাংশন তৈরি করে তাদের সকলের একই ইন্ডেন্টেশন থাকা উচিত, তাদের মূল ফাংশনের ইন্ডেন্টেশন থেকে সেট করা বা "if" বা যাই হোক না কেন। যদি একটি গোষ্ঠীর একটি লাইনের একটি ভিন্ন ইন্ডেন্টেশন থাকে, এটি একটি সিনট্যাক্স ত্রুটি হিসাবে পতাকাঙ্কিত হয়।

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

নতুনরা একটি সাধারণ প্রশ্ন জিজ্ঞাসা করে, "আমার কত স্পেস ইন্ডেন্ট করা উচিত?" অফিসিয়াল পাইথন স্টাইল গাইড (PEP 8) অনুসারে, আপনার 4টি স্পেস দিয়ে ইন্ডেন্ট করা উচিত। (মজার ঘটনা: গুগলের অভ্যন্তরীণ শৈলী নির্দেশিকা 2টি স্পেস দ্বারা ইন্ডেন্টিং নির্দেশ করে!)

রানটাইমে কোড চেক করা হয়েছে

পাইথন কম্পাইলের সময় খুব কম চেকিং করে, যতক্ষণ না সেই লাইনটি চলে ততক্ষণ প্রতিটি লাইনে প্রায় সমস্ত প্রকার, নাম, ইত্যাদি চেক স্থগিত করে। ধরুন উপরের main() কলগুলো পুনরাবৃত্তি করে() এভাবে:

def main():
    if name == 'Guido':
        print(repeeeet(name) + '!!!')
    else:
        print(repeat(name))

if-statement এ একটি সুস্পষ্ট ত্রুটি রয়েছে, যেখানে repeat() ফাংশনটি ভুলবশত repeeeet() হিসাবে টাইপ করা হয়েছে। পাইথনের মজার বিষয়... এই কোডটি কম্পাইল করে এবং রানটাইমে নামটি 'গুইডো' না হওয়া পর্যন্ত সূক্ষ্মভাবে চলে। শুধুমাত্র যখন একটি রান প্রকৃতপক্ষে repeeeet() চালানোর চেষ্টা করে তখন এটি লক্ষ্য করবে যে এই ধরনের কোন ফাংশন নেই এবং একটি ত্রুটি উত্থাপন করবে। এই স্নিপেটে একটি দ্বিতীয় ত্রুটি আছে. 'গুইডো'-এর সাথে তুলনা করার আগে নামটিকে কোনো মান নির্ধারণ করা হয়নি। পাইথন একটি 'NameError' উত্থাপন করবে যদি আপনি একটি আনঅ্যাসাইনড ভেরিয়েবল মূল্যায়ন করার চেষ্টা করেন। এগুলি এমন কিছু উদাহরণ যা দেখায় যে আপনি যখন প্রথমবার একটি পাইথন প্রোগ্রাম চালান, তখন আপনি প্রথম যে ত্রুটিগুলি দেখতে পান সেগুলির মধ্যে কিছু সাধারণ টাইপো বা অপ্রচলিত ভেরিয়েবল হবে। এটি এমন একটি ক্ষেত্র যেখানে জাভার মতো আরও বেশি ভার্বোস টাইপ সিস্টেমের ভাষাগুলির একটি সুবিধা রয়েছে ... তারা কম্পাইলের সময় এই জাতীয় ত্রুটিগুলি ধরতে পারে (তবে অবশ্যই আপনাকে সেই ধরণের সমস্ত তথ্য বজায় রাখতে হবে ... এটি একটি ট্রেডঅফ)।

পাইথন 3 টাইপ ইঙ্গিত চালু করেছে। টাইপ ইঙ্গিত আপনাকে ফাংশনের প্রতিটি আর্গুমেন্টের জন্য টাইপটি কী এবং সেইসাথে ফাংশন দ্বারা প্রত্যাবর্তিত বস্তুর ধরনটি কী তা নির্দেশ করতে দেয়। উদাহরণস্বরূপ, টীকাকৃত ফাংশনে def is_positive(n: int) -> bool: , আর্গুমেন্ট n হল একটি int এবং রিটার্ন মান হল একটি bool । আমরা পরে এই ধরনের মানে কি যেতে হবে. টাইপ ইঙ্গিত যদিও সম্পূর্ণ ঐচ্ছিক. আপনি আরও বেশি সংখ্যক কোড গ্রহণকারী প্রকারের ইঙ্গিতগুলি দেখতে পাবেন কারণ আপনি যদি সেগুলি ব্যবহার করেন তবে কিছু সম্পাদক যেমন cider-v এবং VS.code আপনার ফাংশনগুলি সঠিক আর্গুমেন্ট প্রকারের সাথে কল করা হয়েছে তা যাচাই করার জন্য চেক চালাতে পারে৷ আপনি কোড সম্পাদনা করার সাথে সাথে তারা আর্গুমেন্টের পরামর্শ ও যাচাই করতে পারে। এই টিউটোরিয়ালটি টাইপ ইঙ্গিতগুলি কভার করবে না তবে আমরা নিশ্চিত করতে চাই যে আপনি যদি সেগুলি সম্পর্কে শুনে থাকেন বা বন্য অবস্থায় দেখেন তবে আপনি সেগুলি সম্পর্কে সচেতন হন৷

পরিবর্তনশীল নাম

যেহেতু পাইথন ভেরিয়েবলের সোর্স কোডে কোনো ধরনের বানান নেই, তাই আপনার ভেরিয়েবলের অর্থপূর্ণ নাম দেওয়া অতিরিক্ত সহায়ক যা নিজেকে মনে করিয়ে দিতে কী ঘটছে। তাই "নাম" ব্যবহার করুন যদি এটি একটি একক নাম হয়, এবং "নাম" যদি এটি নামের তালিকা হয়, এবং "টুপলস" যদি এটি টিপলের একটি তালিকা হয়। অনেক মৌলিক পাইথন ত্রুটি প্রতিটি ভেরিয়েবলে কি ধরনের মান রয়েছে তা ভুলে যাওয়ার ফলে, তাই জিনিসগুলি সোজা রাখতে সাহায্য করার জন্য আপনার পরিবর্তনশীল নামগুলি (আপনার কাছে সত্যিই আছে) ব্যবহার করুন।

যতদূর প্রকৃত নামকরণ যায়, কিছু ভাষা "একটির বেশি শব্দ" দ্বারা গঠিত পরিবর্তনশীল নামের জন্য আন্ডারস্কোরড_পার্টস পছন্দ করে, তবে অন্যান্য ভাষা ক্যামেলকেসিং পছন্দ করে। সাধারণভাবে, পাইথন আন্ডারস্কোর পদ্ধতি পছন্দ করে কিন্তু ডেভেলপারদেরকে উটকেসিং-এ স্থগিত করার জন্য গাইড করে যদি বিদ্যমান পাইথন কোডের সাথে একীভূত হয় যা ইতিমধ্যেই সেই স্টাইলটি ব্যবহার করে। পঠনযোগ্যতা গণনা. PEP 8-এ নামকরণের প্রথার বিভাগে আরও পড়ুন।

আপনি যেমন অনুমান করতে পারেন, 'if' এবং 'while'-এর মতো কীওয়ার্ডগুলি পরিবর্তনশীল নাম হিসাবে ব্যবহার করা যাবে না — আপনি যদি তা করেন তবে আপনি একটি সিনট্যাক্স ত্রুটি পাবেন। যাইহোক, পরিবর্তনশীল নাম হিসাবে বিল্ট-ইন ব্যবহার না করার বিষয়ে সতর্ক থাকুন। উদাহরণস্বরূপ, যদিও 'str', 'তালিকা' এবং 'প্রিন্ট' ভালো নামের মতো মনে হতে পারে, আপনি সেই সিস্টেম ভেরিয়েবলগুলিকে ওভাররাইড করবেন। বিল্ট-ইনগুলি কীওয়ার্ড নয় এবং তাই, নতুন পাইথন বিকাশকারীদের দ্বারা অসাবধানতাবশত ব্যবহারের জন্য সংবেদনশীল।

মডিউল এবং তাদের নেমস্পেস সম্পর্কে আরও

ধরুন আপনি একটি মডিউল "binky.py" পেয়েছেন যাতে একটি "def foo()" রয়েছে। সেই foo ফাংশনের সম্পূর্ণ যোগ্য নাম হল "binky.foo"। এইভাবে, বিভিন্ন পাইথন মডিউল তাদের ফাংশন এবং ভেরিয়েবলের নাম দিতে পারে যা খুশি, এবং ভেরিয়েবলের নাম বিরোধ করবে না — module1.foo module2.foo থেকে আলাদা। পাইথন শব্দভাণ্ডারে, আমরা বলব যে binky, module1 এবং module2 এর প্রত্যেকেরই নিজস্ব "নেমস্পেস" আছে, যা আপনি অনুমান করতে পারেন পরিবর্তনশীল নাম-টু-অবজেক্ট বাইন্ডিং।

উদাহরণস্বরূপ, আমাদের কাছে স্ট্যান্ডার্ড "sys" মডিউল রয়েছে যাতে কিছু স্ট্যান্ডার্ড সিস্টেম সুবিধা রয়েছে, যেমন argv তালিকা এবং exit() ফাংশন। "sys আমদানি করুন" বিবৃতি দিয়ে আপনি তারপর sys মডিউলের সংজ্ঞাগুলি অ্যাক্সেস করতে পারেন এবং তাদের সম্পূর্ণ-যোগ্য নাম দ্বারা উপলব্ধ করতে পারেন, যেমন sys.exit()৷ (হ্যাঁ, 'sys'-এর একটি নামস্থানও আছে!)

  import sys

  # Now can refer to sys.xxx facilities
  sys.exit(0)

এইরকম দেখতে আরেকটি আমদানি ফর্ম আছে: "sys import argv থেকে, প্রস্থান করুন"। এটি তাদের সংক্ষিপ্ত নাম দ্বারা argv এবং exit() উপলব্ধ করে; যাইহোক, আমরা সম্পূর্ণ-যোগ্য নামের সাথে মূল ফর্মের সুপারিশ করি কারণ একটি ফাংশন বা বৈশিষ্ট্য কোথা থেকে এসেছে তা নির্ধারণ করা অনেক সহজ।

অনেকগুলি মডিউল এবং প্যাকেজ রয়েছে যা পাইথন ইন্টারপ্রেটারের একটি স্ট্যান্ডার্ড ইনস্টলেশনের সাথে একত্রিত, তাই আপনাকে সেগুলি ব্যবহার করার জন্য অতিরিক্ত কিছু করতে হবে না। এগুলো সম্মিলিতভাবে "পাইথন স্ট্যান্ডার্ড লাইব্রেরি" নামে পরিচিত। সাধারণত ব্যবহৃত মডিউল/প্যাকেজ অন্তর্ভুক্ত:

  • sys — এক্সিট-এ এক্সিট(), argv, stdin, stdout, ...
  • re — নিয়মিত অভিব্যক্তি
  • os — অপারেটিং সিস্টেম ইন্টারফেস, ফাইল সিস্টেম

আপনি http://docs.python.org/library- এ সমস্ত স্ট্যান্ডার্ড লাইব্রেরি মডিউল এবং প্যাকেজের ডকুমেন্টেশন খুঁজে পেতে পারেন।

অনলাইন সাহায্য, help() , এবং dir()

পাইথনের জন্য সাহায্য পাওয়ার বিভিন্ন উপায় রয়েছে।

  • একটি Google অনুসন্ধান করুন, "পাইথন" শব্দ দিয়ে শুরু করুন, যেমন "পাইথন তালিকা" বা "পাইথন স্ট্রিং ছোট হাতের অক্ষর"। প্রথম আঘাত প্রায়ই উত্তর. এই কৌশলটি কিছু কারণে অন্যান্য ভাষার তুলনায় পাইথনের জন্য ভাল কাজ করে বলে মনে হচ্ছে।
  • অফিসিয়াল Python ডক্স সাইট — docs.python.org — উচ্চ মানের ডক্স আছে। তবুও, আমি প্রায়শই দ্রুত হতে কয়েকটি শব্দের Google অনুসন্ধান খুঁজে পাই।
  • যারা পাইথন এবং/অথবা প্রোগ্রামিং-এ নতুন তাদের জন্য বিশেষভাবে ডিজাইন করা একটি অফিসিয়াল টিউটর মেলিং তালিকাও রয়েছে!
  • StackOverflow এবং Quora- এ অনেক প্রশ্ন (এবং উত্তর) পাওয়া যাবে।
  • সাহায্য() এবং dir() ফাংশন ব্যবহার করুন (নীচে দেখুন)।

পাইথন ইন্টারপ্রেটারের ভিতরে, help() ফাংশন বিভিন্ন মডিউল, ফাংশন এবং পদ্ধতির জন্য ডকুমেন্টেশন স্ট্রিং আপ করে। এই ডক স্ট্রিংগুলি জাভা এর javadoc অনুরূপ। dir() ফাংশন আপনাকে বলে যে একটি বস্তুর বৈশিষ্ট্যগুলি কী। দোভাষী থেকে help() এবং dir() কল করার কিছু উপায় নিচে দেওয়া হল:

  • help(len) — বিল্ট-ইন len() ফাংশনের জন্য হেল্প স্ট্রিং; মনে রাখবেন যে এটি "len" নয় "len()", যা ফাংশনের জন্য একটি কল , যা আমরা চাই না
  • help(sys)sys মডিউলের জন্য হেল্প স্ট্রিং (প্রথমে একটি import sys করতে হবে)
  • dir(sys)dir() হল help() এর মত কিন্তু শুধু এর সংজ্ঞায়িত চিহ্ন বা "গুণাবলী" এর একটি দ্রুত তালিকা দেয়
  • help(sys.exit)sys মডিউলে exit() ফাংশনের জন্য সাহায্য স্ট্রিং
  • help('xyz'.split) — স্ট্রিং অবজেক্টের জন্য split() পদ্ধতির জন্য সাহায্য স্ট্রিং। আপনি সেই বস্তুর সাথে help() কল করতে পারেন বা সেই বস্তুর একটি উদাহরণ , প্লাস এর বৈশিষ্ট্য। উদাহরণস্বরূপ, কলিং help('xyz'.split) কলিং help(str.split) এর মতই।
  • help(list)list বস্তুর জন্য সাহায্য স্ট্রিং
  • dir(list) — এর পদ্ধতি সহ list অবজেক্টের বৈশিষ্ট্য প্রদর্শন করে
  • help(list.append)list অবজেক্টের জন্য append() পদ্ধতির জন্য সাহায্য স্ট্রিং