Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

পাইথন by Mind Map: পাইথন
5.0 stars - 1 reviews range from 0 to 5

পাইথন

ব্যাসিক

পরিচিতি

হাই লেভেল, জেনারেল পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ

ওয়েব, মোবাইল, আর্টিফিশিয়াল ইন্টেলিজেন্স, ডাটা সায়েন্স সহ অনেক ক্ষেত্রে ব্যবহার করা যায়

রানটাইমে পাইথন প্রসেসড হয়, কম্পাইল করার দরকার নাই

৩টি প্রধান ভার্সন 1.x, 2.x, 3.x

আরও জানতে

কনসোল

পাইথন ইন্সটলেশনের সাথে থাকে IDLE

Mac, Linux এ বিল্ট ইন পাইথন থাকায় টার্মিনাল থেকে interpreter চালু করা যায়

একে REPL  (a read-eval-print loop) -ও বলা হয়

কনসোল/REPL বন্ধ করতে exit() বা quit() লিখে এন্টার চাপতে হয়

সিম্পল অপারেশন

>>> 5+2 7 >>> 5 - 2 3 >>> 2 * (3 + 4) 14 >>> 10 / 3 3.33333...

Float

যে সংখ্যা গুলো Integer বা পূর্ণ সংখ্যা নয় তাদের প্রকাশ করতে float ব্যবহার হয়

>>> a = 10.5 >>> a 10.5 >>> type(a) <class 'float'> >>> 50/5 10.0 >>> pi = .314e1 >>> pi 3.14

আরও কিছু নিউমেরিক অপারেশন

>>> 2 ** 5 #exponentiation 32 >>> 9 ** (1/2) 3.0

>>> 20 // 6 #quotient 3 >>> 10 % 3 #remainder 1

String

>>> "Python is fun!" 'Python is fun!' >>> 'Always look on the bright side of life' 'Always look on the bright side of life'

>>> 'I\'m Nuhil' "I'm Nuhil"

>>> """Name: Nuhil ... age: 28""" 'Name: Nuhil\nage: 28'

ইনপুট - আউটপুট

>>> print(1 + 1) 2 >>> print("Hello\nWorld!") Hello World!

>>> input("Enter something please: ") Enter something please: This is what\nthe user enters! 'This is what\\nthe user enters!'

String অপারেশন

>>> "Spam" + 'eggs' 'Spameggs' >>> print("First string" + ", " + "second string") First string, second string

>>> "2" + "2" '22' >>> 1 + '2' + 3 + '4' Traceback (most recent call last):  File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'

>>> print("spam" * 3) spamspamspam >>> 4 * '2' '2222' >>> '17' * '87' TypeError: can't multiply sequence by non-int of type 'str'

টাইপ কনভার্সন

>>> "2" + "3" '23' >>> int("2") + int("3") 5

ভ্যারিয়েবল

>>> x = 7 >>> print(x) 7 >>> print(x + 3) 10 >>> print(x) 7

>>> x = 123.456 >>> print(x) 123.456 >>> x = "This is a string" >>> print(x + "!") This is a string!

>>> this_is_a_normal_name = 7 >>> 123abc = 7 SyntaxError: invalid syntax >>> spaces are not allowed SyntaxError: invalid syntax

>>> foo 'a string' >>> del foo >>> foo  NameError: name 'foo' is not defined

ইনপ্লেস অপারেটর

>>> x = 2 >>> print(x) 2 >>> x += 3 #x = x + 3 >>> print(x) 5

কন্ট্রোল স্ট্রাকচার

বুলিয়ান ও তুলনা

>>> my_boolean = True >>> my_boolean True >>> 2 == 3 False >>> "hello" == "hello" True

>>> 1 != 1 False >>> "eleven" != "seven" True >>> 2 != 10 True

>>> 7 > 5 True >>> 10 < 10 False

>>> 7 <= 8 True >>> 9 >= 9.0 True

>>> a = 10 >>> b = 20 >>> a is not b True >>> a is b False

if

>>> if 10 > 5:             print("10 is greater than 5") #Output 10 is greater than 5

num = 12 if num > 5:           print("Bigger than 5")     if num <=47:         print("Between 5 and 47") #Output  Bigger than 5 Between 5 and 47

else

x = 4 if x == 5:     print("Yes") else:     print("No") #Output No

num = 7 if num == 5:           print("Number is 5") elif num == 11:     print("Number is 11") elif num == 7:     print("Number is 7") else:     print("Number isn't 5, 11 or 7") -------------------- #Output Number is 7

বুলিয়ান লজিক

>>> 1 == 1 and 2 == 2 True >>> 1 == 1 and 2 == 3 False >>> 1 != 1 and 2 == 2 False >>> 2 < 1 and 3 > 6 False

>>> 1 == 1 or 2 == 2 True >>> 1 == 1 or 2 == 3 True >>> 1 != 1 or 2 == 2 True >>> 2 < 1 or 3 >  6 False

>>> not 1 == 1 False >>> not 1 > 7 True

অপারেটর প্রাধান্য

>>> False == False or True True >>> False == (False or True) False >>> (False == False) or True True

** ~+- * / % // +- >><< & ^| <= < > >= <> == != = %= /= //= -= += *= **= is is not in not in not or and

while লুপ

i = 1 while i <= 5:           print(i)     i = i + 1 print("Finished!") --------------- #Output 1 2 3 4 5 Finished!

break, i = 0 while i < 10:           print(i)           i += 1     if i == 5:         break --------- #Output 0 1 2 3 4

continue, i = 0 while True:       i = i +1         if i == 2:             print("Skipping 2")             continue         if i == 5:         print("Breaking")         break     print(i) print("Finished") #Output 1 Skipping 2 3 4 Breaking Finished

লিস্ট

words = ["Hello", "world", "!"] print(words[0]) print(words[1]) print(words[2])  -------------------------------------- #Output Hello world !

number = 3 things = ["string", 0, [1, 2, number], 4.56] print(things[1]) print(things[2]) print(things[2][2])  -------------------------------------- #Output 0 [1, 2, 3] 3

str = "Hello world!" print(str[6])  ---------------------- #Output w

list অপারেশন

nums = [7, 7, 7, 7, 7] nums[2] = 5 print(nums)  ---------------- #Output [7, 7, 5, 7, 7]

nums = [1, 2, 3] print(nums + [4, 5, 6]) print(nums * 3) ------------------------ #Output [1, 2, 3, 4, 5, 6] [1, 2, 3, 1, 2, 3, 1, 2, 3]

words = ["spam", "egg", "spam", "sausage"] print("spam" in words) print("egg" in words) print("tomato" in words) ------------------------------------- #Output True True False

nums = [1, 2, 3] print(not 4 in nums) print(4 not in nums) print(not 3 in nums) print(3 not in nums) ----------------------- #Output True True False False

numbers = [1,2,3,4,5,6,7,8,9,10] last_number = numbers[-1] print(last_number) first_five_numbers = numbers[0:5] print(first_five_numbers) last_five_numbers = numbers[-6:-1]  print(last_five_numbers)  ------------------------------------- #Output 10 [1, 2, 3, 4, 5]  [5, 6, 7, 8, 9]

list ফাংশন সমূহ

nums = [1, 2, 3] nums.append(4) print(nums) --------------- #Output [1, 2, 3, 4]

nums = [1, 3, 5, 2, 4] print(len(nums)) --------------- #Output 5

words = ["Python", "fun"] words.insert(1, "is") print(words) -------------------------- #Output ['Python', 'is', 'fun']

letters = ['p', 'q', 'r', 's', 'p', 'u'] print(letters.index('r')) print(letters.index('p')) print(letters.index('z'))  ---------------------------- #Output 2 0 ValueError: 'z' is not in list

Range রেঞ্জ

numbers = list(range(10)) print(numbers)  --------------- #Output [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

numbers = list(range(3, 8)) print(numbers) ---------------- #Output [3, 4, 5, 6, 7]

numbers = list(range(5, 20, 2)) print(numbers) ------------------------- #Output [5, 7, 9, 11, 13, 15, 17, 19]

for লুপ

for i in range(5):     print("hello!") ----------  #Output hello! hello! hello! hello! hello!

for letter in 'Python':     print(letter)  ------------------------------ #Output P y t h o n

words = ["hello", "world", "spam", "eggs"] for word in words:     print(word + "!")  ------------------------------ #Output hello! world! spam! eggs!

ফাংশন ও মডিউল

কোডের পুনব্যবহার

DRY - Do not Repeat Yourself

ফাংশন ও মডিউল  ব্যবহার করে DRY মেইন্টেইন করা যায়

WET - Write Everything Twice

ফাংশন

def my_func():           print("spam")   my_func()  ------------------ #Output spam

hello() def hello():       print("Hello world!")  ------------------------- #Output NameError: name 'hello' is not defined

আর্গুমেন্ট

def print_with_exclamation(word):   print(word + "!")     print_with_exclamation("spam") --------------------------- #Output spam!

def print_sum_twice(x, y):         print(x + y)         print(x + y) print_sum_twice(5, 8)  --------------------------------- #Output 13 13

def function(variable):     variable += 1       print(variable) function(7) print(variable) --------------------------- #Output 8 NameError: name 'variable' is not defined

রিটার্ন

def give_double(x):     return x * 2 my_double = give_double(10) print(my_double) -------------------------------- #Output 20

def add_numbers(x, y):     total = x + y     return total     print("This won't be printed") print(add_numbers(4, 5)) -------------------------------- #Output 9

কমেন্ট ও ডক স্ট্রিং

x = 365 y = 7 # this is a comment print(x % y) # find the remainder # print (x // y) # another comment  --------------------------- #Output 1

def shout(word):       """           Print a word with an           exclamation mark following it.           """         print(word + "!")     shout("spam")  print(shout.__doc__) #To print the doc string --------------------------- #Output spam! Print a word with an exclamation mark following it.

অবজেক্ট হিসেবে ফাংশন

def multiply(x, y):       return x * y a = 4 b = 7 operation = multiply print(operation(a, b)) ---------------- #Output 28

def add(x, y):         return x + y def do_twice(func, x, y):       return func(func(x, y), func(x, y)) a = 5 b = 10 print(do_twice(add, a, b))  ---------------------------------------- #Output 30

মডিউল

import random for i in range(5):   value = random.randint(1, 6)   print(value) ------------------------------ #Output 2 3 6 5 4

from math import pi print(pi)  ----------------- #Output 3.141592653589793

from math import sqrt as square_root print(square_root(100)) -------------------- #Output 10.0

pip ও স্ট্যান্ডার্ড লাইব্রেরী

string, re, datetime, math, random, os, multiprocessing, subprocess, socket, email, json, doctest, unittest, pdb

অনেকের ডেভেলপ করা মডিউল জমা থাকে Python Package Index (PyPi) তে

pip নামের টুল/প্রোগ্রাম ব্যবহার করে এগুলো ইন্সটল করে নেয়া যায়

আরও জানতে

এক্সেপশন

এক্সেপশন কি

ভুল কোন কিছু  ঘটে গেলে এটি তৈরি হয়

num1 = 7 num2 = 0 print(num1/num2) ------------------------- #Output ZeroDivisionError: division by zero

ImportError: an import fails; IndexError: a list is indexed with an out-of-range number; NameError: an unknown variable is used; SyntaxError: the code can't be parsed properly; TypeError: a function is called on a value of an inappropriate type; ValueError: a function is called on a value of the correct type, but with an inappropriate value.

এক্সেপশন হ্যান্ডলিং

try:     num1 = 7     num2 = 0     print (num1 / num2)     print("Done calculation") except ZeroDivisionError:     print("An error occurred")     print("due to zero division") ----------------------- #Output An error occurred due to zero division

try:       variable = 10         print(variable + "hello")         print(variable / 2) except ZeroDivisionError:     print("Divided by zero") except (ValueError, TypeError):     print("Error occurred") ----------------------------------- #Output Error occurred

try:     word = "spam"     print(word / 0) except:     print("An error occurred")  ----------------------- #Output An error occurred

ফাইনালি

try:     print("Hello")     print(1 / 0) except ZeroDivisionError:     print("Divided by zero") finally:     print("This code will run no matter what") ----------------------------------- #Output Hello Divided by zero This code will run no matter what

এক্সেপশন রেইজ করা

print(1) raise ValueError print(2)  ------------- #Output 1 ValueError

name = "123" raise NameError("Invalid name!") --------------------------------- #Output NameError: Invalid name!

try:       num = 5 / 0 except:       print("An error occurred")       raise -------------------------- #Output An error occurred ZeroDivisionError: division by zero

Assertion

print(1) assert 2 + 2 == 4 print(2) assert 1 + 1 == 3 print(3)  ----------------- #Output 1 2 AssertionError

temp = -10 assert (temp >= 0), "Colder than absolute zero!" --------------------------------------------- #Output AssertionError: Colder than absolute zero!

ফাইল অপারেশন

ফাইল খোলা

myfile = open("filename.txt")

# write mode open("filename.txt", "w") # read mode open("filename.txt", "r") # append mode open("filename.txt", "a") # binary write mode open("filename.txt", "wb")

file = open("filename.txt", "w") # do stuff to the file file.close()

ফাইল থেকে পড়া

file = open("filename.txt", "r") cont = file.read() print(cont) file.close()  ------------------------ #Output will be content of that file

file = open("filename.txt", "r") print(file.read(16))  ------------------------------------  #Output will be first 16 byte of the file

file = open("filename.txt", "r") print(file.readlines()) file.close() --------------------------- #Output ['Line 1 text \n', 'Line 2 text \n', 'Line 3 text']

file = open("filename.txt", "r") for line in file:     print(line) file.close()   --------------------------- #Output Line 1 text Line 2 text Line 3 text

ফাইলে লেখা

file = open("newfile.txt", "w") file.write("This has been written to a file") file.close() file = open("newfile.txt", "r") print(file.read()) file.close()

file = open("newfile.txt", "r") print(file.read()) Hello file.close() file = open("newfile.txt", "a") file.write(" World!") 7 file.close()   file = open("newfile.txt", "r") file.read() 'Hello World!'  file.close()

ফাইল নিয়ে কাজের টিপস

try:       f = open("filename.txt")         print(f.read()) finally:       f.close()

with open("filename.txt") as f:       print(f.read())

ব্যবহার বিধি

(ব্যবহার বিধি) থেকে (ক্রেডিট) পর্যন্ত ক্রম অনুযায়ী দেখুন

যেখানে এই চিহ্ন দেখবেন সেখানে বর্ণনা মূলক নোট আছে

এখানে বর্ণনা আছে

এই চিহ্ন এখানে একটি রেফারেন্স লিঙ্ককে নির্দেশিত করে

সবুজ রঙের চেক মার্ক মানে হচ্ছে এই কোড ব্লকটি এখনি টেস্ট করা যাবে, লিঙ্ক চিহ্নে ক্লিক করে

ক্রেডিট

ইন্টারনেটের বিভিন্ন সোর্স থেকে নেয়া

শীঘ্রই নির্দিষ্ট করে লিঙ্ক গুলো যুক্ত করে দেয়া হবে

সমন্বয়ক ও যোগাযোগ - Nuhil Mehdy -

আরও ডাটা টাইপ

None

>>> None == None True >>> None >>> print(None) None >>>

def some_func(): print("Hi!") var = some_func() print(var)  ----------------- #Output Hi! None

ডিকশনারি

ages = {"Dave": 24, "Mary": 42, "John": 58} print(ages["Dave"]) print(ages["Mary"])  ------------------------------ #Output 24 42

primary = {  "red": [255, 0, 0],  "green": [0, 255, 0],  "blue": [0, 0, 255], } print(primary["red"]) print(primary["yellow"]) ------------------ #Output [255, 0, 0] KeyError: 'yellow'

ডিকশনারি ফাংশন সমূহ

squares = {1: 1, 2: 4, 3: "error", 4: 16,} squares[8] = 64 squares[3] = 9 print(squares) --------------------------- #Output {8: 64, 1: 1, 2: 4, 3: 9, 4: 16}

nums = { 1: "one", 2: "two", 3: "three", } print(1 in nums) print("three" in nums) print(4 not in nums)  ------------------ #Output  True False True

pairs = {1: "apple", "orange": [2, 3, 4], True: False, None: "True", } print(pairs.get("orange")) print(pairs.get(7)) print(pairs.get(12345, "not in dictionary")) ------------------------------------ #Output [2, 3, 4] None not in dictionary

টাপল

words = ("spam", "eggs", "sausages",) print(words[0]) --------------------------- #Output spam

words = ("spam", "eggs", "sausages",)   words[1] = "cheese" --------------------------------- #Output Traceback (most recent call last):  File "", line 1, in TypeError: 'tuple' object does not support item assignment

my_tuple = "one", "two", "three" print(my_tuple[0]) ----------------------- #Output one

লিস্ট স্লাইস

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(squares[2:6]) print(squares[3:8]) print(squares[0:1]) -------------------------------------- #Output [4, 9, 16, 25] [9, 16, 25, 36, 49] [0]

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(squares[:7]) print(squares[7:])  --------------------------------- #Output [0, 1, 4, 9, 16, 25, 36] [49, 64, 81]

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(squares[::2]) print(squares[2:8:3]) --------------------------------- #Output [0, 4, 16, 36, 64] [4, 25]

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(squares[1:-1])  --------------------------- #Output [1, 4, 9, 16, 25, 36, 49, 64]

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(squares[::-1]) ------------------------------------ #Output [81, 64, 49, 36, 25, 16, 9, 4, 1, 0]

লিস্ট কম্প্রিহেনশন

cubes = [i**3 for i in range(5)] print(cubes) ----------------------- #Output [0, 1, 8, 27, 64]

evens=[i**2 for i in range(10) if i**2 % 2 == 0] print(evens) ------------------------------- #Output [0, 4, 16, 36, 64]

স্ট্রিং ফরম্যাটিং

nums = [4, 5, 6] msg = "Numbers: {0} {1} {2}". format(nums[0], nums[1], nums[2]) print(msg)  ----------------------------------- #Output Numbers: 4 5 6

a = "{x}, {y}".format(x=5, y=12) print(a)  -------------------- #Output 5, 12

কিছু উপকারী ফাংশন

string, print(", ".join(["spam", "eggs", "ham"])) #prints "spam, eggs, ham" print("Hello ME".replace("ME", "world")) #prints "Hello world" print("This is a sentence.".startswith("This")) # prints "True" print("This is a sentence.".endswith("sentence.")) # prints "True" print("This is a sentence.".upper()) # prints "THIS IS A SENTENCE." print("AN ALL CAPS SENTENCE".lower()) #prints "an all caps sentence" print("spam, eggs, ham".split(", ")) #prints "['spam', 'eggs', 'ham']"

numeric, print(min(1, 2, 3, 4, 0, 2, 1)) print(max([1, 4, 9, 2, 5, 6, 8])) print(abs(-99)) print(abs(42)) print(sum([1, 2, 3, 4, 5])) ------------------- #Output 0 9 99 42 15

list, nums = [55, 44, 33, 22, 11] if all([i > 5 for i in nums]):   print("All larger than 5") if any([i % 2 == 0 for i in nums]):   print("At least one is even") for v in enumerate(nums):   print(v) ------------------------ #Output All larger than 5 At least one is even (0, 55) (1, 44) (2, 33) (3, 22) (4, 11)

ফাংশনাল প্রোগ্রামিং

ভূমিকা

প্রোগ্রামিং স্টাইল যেটা বিশেষত নির্ভর করে ফাংশনের উপর

higher-order-function গুলো এই ধারার মুল জিনিষ, def make_twice(func, arg):     return func(func(arg)) def add_five(x):     return x + 5 print(make_twice(add_five, 10)) -------------------- #Output 20

পিওর ফাংশন, def my_pure_function(a,b):     c = (2 * a) + (2 * b)     return c my_pure_function(5,10) ------------------------ #Output 30

ইম্পিওর ফাংশন, my_list = [] def my_impure_function(arg):     my_list.append(arg) my_impure_function(10) print(my_list) ------------------------ #Output [10]

ল্যাম্বডা

def my_function(func, arg):     return func(arg) print(my_function(lambda x: 2 * x, 5)) ----------------------- #Output 10

print((lambda x,y: x + 2 * y)(2,3)) ----------------------- #Output 8

ম্যাপ ও ফিল্টার

def make_double(x):     return x * 2 my_marks = [10, 12, 20, 30] result = map(make_double, my_marks) print(list(result)) ------------------------ #Output [20, 24, 40, 60]

def is_even(x):     return x % 2 == 0 my_numbers = [1,2,3,4,5,6] result = filter(is_even, my_numbers) print(list(result)) --------------------------- #Output [2, 4, 6]

জেনারেটর

def my_iterable():     i = 5     while i > 0:         yield i         i -= 1 for i in my_iterable():     print(i) --------------------------- #Output 5 4 3 2 1

def even_numbers(x):     for i in range(x):         if i % 2 == 0:             yield i even_nums_list = list(even_numbers(10)) print(even_nums_list) ------------------------------- #Output [0, 2, 4, 6, 8]

ডেকোরেটর

def my_decorator(func):     def decorate():         print("****************")         func()         print("****************")     return decorate def print_raw():     print("Clear Text") decorated_function = my_decorator(print_raw) decorated_function() --------------------------------------------- #Output **************** Clear Text ****************

def my_decorator(func):         def decorate():             print("****************")             func()             print("****************")           return decorate  @my_decorator def print_text():       print("Hello World!") --------------------------------------------- #Output **************** Clear Text ****************

রিকারসন

def factorial(x):       if x == 1:           return 1       else:             return x * factorial(x-1)     print(factorial(5))  --------------------------------- #Output 120

def is_even(x):       if x == 0:           return True       else:           return is_odd(x-1) def is_odd(x):       return not is_even(x) print(is_odd(17)) print(is_even(23))  ------------------------ #Output True False

সেট

num_set = {1, 2, 3, 4, 5} word_set = set(["spam", "eggs", "sausage"]) print(3 in num_set) print("spam" not in word_set)  ---------------------------- #Output True False

সেট এর ভ্যালু গুলো অর্ডারড (ক্রম অনুসারে সাজানো) নয়

nums = {1, 2, 1, 3, 1, 4, 5, 6} print(nums) -------------------- #Output {1, 2, 3, 4, 5, 6}

অপারেশন, first = {1, 2, 3, 4, 5, 6} second = {4, 5, 6, 7, 8, 9} print(first | second) print(first & second) print(first - second) print(second - first) print(first ^ second)  -------------------- #Output {1, 2, 3, 4, 5, 6, 7, 8, 9} {4, 5, 6} {1, 2, 3} {8, 9, 7} {1, 2, 3, 7, 8, 9}

itertools

এটা একটা স্ট্যান্ডার্ড লাইব্রেরী যার মধ্যে বেশ কিছু গুরুত্বপূর্ণ ফাংশন আছে যেগুলো ফাংশনাল প্রোগ্রামিং এর জন্য উপকারী

from itertools import count for i in count(3):       print(i)       if i >=11:           break  --------------------- #Output 3 4 5 6 7 8 9 10 11

from itertools import accumulate, takewhile nums = list(accumulate(range(8))) print(nums) print(list(takewhile(lambda x: x<= 6, nums))) -------------------------------------------- #Output [0, 1, 3, 6, 10, 15, 21, 28] [0, 1, 3, 6]

অবজেক্ট ওরিয়েন্টেড

ক্লাস

class Cat:     def __init__(self, color, legs):         self.color = color         self.legs = legs felix = Cat("ginger", 4) print(felix.color) -------------------------- #Output ginger

class Dog:       def __init__(self, name, color):             self.name = name             self.color = color         def bark(self):           print("Woof!") fido = Dog("Fido", "brown") print(fido.name) fido.bark()  ------------------------------- #Output Fido Woof!

class Dog:     legs = 4       def __init__(self, name, color):           self.name = name           self.color = color fido = Dog("Fido", "brown") print(fido.legs) print(Dog.legs)  ----------------------------- #Output 4 4

ইনহেরিট্যান্স

class Animal:     def __init__(self, name, color):         self.name = name         self.color = color class Cat(Animal):     def purr(self):         print("Purr...")         class Dog(Animal):     def bark(self):         print("Woof!") fido = Dog("Fido", "brown") print(fido.color) fido.bark() --------------------- #Output brown Woof!

class Wolf:         def __init__(self, name, color):           self.name = name           self.color = color         def bark(self):           print("Grr...") class Dog(Wolf):       def bark(self):           print("Woof") husky = Dog("Max", "grey") husky.bark()  ----------------------- #Output Woof

class A:       def method(self):           print("A method")     class B(A):       def another_method(self):           print("B method")     class C(B):       def third_method(self):           print("C method")     c = C() c.method() c.another_method() c.third_method()  ------------------------- #Output A method B method C method

class A:       def spam(self):           print(1) class B(A):       def spam(self):           print(2)           super().spam()             B().spam() ---------------- #Output 2 1

ম্যাজিক মেথড ও অপারেটর অভারলোডিং

class Vector2D:       def __init__(self, x, y):           self.x = x           self.y = y       def __add__(self, other):           return Vector2D(self.x + other.x, self.y + other.y) first = Vector2D(5, 7) second = Vector2D(3, 9) result = first + second print(result.x) print(result.y) ------------------------------- #Output 8 16

__sub__ for - __mul__ for * __truediv__ for / __floordiv__ for // __mod__ for % __pow__ for ** __and__ for & __xor__ for ^ __or__ for |

__lt__ for < __le__ for <= __eq__ for == __ne__ for != __gt__ for > __ge__ for >=

__len__ for len() __getitem__ for indexing __setitem__ for assigning to indexed values __delitem__ for deleting indexed values __iter__ for iteration over objects (e.g., in for loops) __contains__ for in, import random class VagueList:       def __init__(self, cont):           self.cont = cont     def __getitem__(self, index):         return self.cont[index + random.randint(-1, 1)]     def __len__(self):         return random.randint(0, len(self.cont)*2) vague_list = VagueList(["A", "B", "C", "D", "E"]) print(len(vague_list)) print(len(vague_list)) print(vague_list[2]) print(vague_list[2]) -------------------------------------------------- #Output 6 7 D C

অবজেক্টের জীবনকাল

creation, manipulation, destruction

একটি অবজেক্টের Destruction ঘটে যখন এর reference কাউন্ট শূন্য হয়ে যায়, del স্টেটমেন্ট দিয়ে রেফারেন্স কাউন্ট এর মান কমানো যায়

অপ্রয়োজনীয় তথা শূন্য রেফারেন্স কাউন্ট ওয়ালা অবজেক্টদের ডিলিট করার কাজকেই গারবেজ কালেকশন বলা হয়ে থাকে

a = 42 # Create object <42> b = a # Increase ref. count of <42> c = [a] # Increase ref. count of <42> del a # Decrease ref. count of <42> b = 100 # Decrease ref. count of <42> c[0] = -1 # Decrease ref. count of <42>

ডাটা হাইডিং

encapsulation, পাইথনে সরাসরি এই ধারনা নাই

"we are all consenting adults here"

বরং ইউজারকে ক্লাসের কোন ইমপ্লিমেন্টেশন ডিটেইলকে অ্যাক্সেস করতে নিরুৎসাহিত করা হয় অন্য ভাবে

weakly private, এরকম মেথড ও অ্যাট্রিবিউট গুলোর সামনে সিঙ্গেল আন্ডার স্কোর দিয়ে নির্দেশিত করা হয়, যদিও কড়াকড়ি ভাবে এটা অন্যদের কাছ থেকে অ্যাক্সেস বন্ধ করে না কিন্তু নিরুৎসাহিত করার জন্য প্রকাশ করে, কিন্তু, from module_name import * এভাবে ইম্পোরট করা ক্লাসের সেই "সিঙ্গেল আন্ডার স্কোর" ওয়ালা এলিমেন্ট গুলো  ইম্পোরট হবে না, class Queue:       def __init__(self, contents):           self._hiddenlist = list(contents)         def push(self, value):         self._hiddenlist.insert(0, value)           def pop(self):               return self._hiddenlist.pop(-1)         def __repr__(self):           return "Queue({})".format(self._hiddenlist) queue = Queue([1, 2, 3]) print(queue) queue.push(0) print(queue) queue.pop() print(queue) print(queue._hiddenlist)  ------------------------------------- #Output Queue([1, 2, 3]) Queue([0, 1, 2, 3]) Queue([0, 1, 2]) [0, 1, 2]

strongly private, এলিমেন্ট এর সামনে ডাবল  আন্ডারস্কোর দিয়ে স্ট্রং প্রাইভেসি প্রকাশ করা হয়, class Spam:       __egg = 7       def print_egg(self):           print(self.__egg) s = Spam() s.print_egg() print(s._Spam__egg) print(s.__egg) --------------- #Output  7 7 AttributeError: 'Spam' object has no attribute '__egg'

ক্লাস ও স্ট্যাটিক মেথড

ক্লাস মেথড, class Rectangle:       def __init__(self, width, height):           self.width = width           self.height = height  def calculate_area(self):       return self.width * self.height  @classmethod  def new_square(cls, side_length):       return cls(side_length, side_length) #instantiation done correctly even with one argument square = Rectangle.new_square(5)  #So, it can now call class's regular method print(square.calculate_area()) --------------------------------------------- #Output 25

স্ট্যাটিক মেথড, class Pizza:       def __init__(self, toppings):           self.toppings = toppings  @staticmethod  def validate_topping(topping):       if topping == "pineapple":           raise ValueError("No pineapples!")       else:           return True ingredients = ["cheese", "onions", "spam"] if all(Pizza.validate_topping(i) for i in ingredients):     pizza = Pizza(ingredients)     print(pizza) --------------------------------- #Output <__main__.Pizza object at 0x1057a2908>

প্রোপার্টি

class Pizza:       def __init__(self, toppings):             self.toppings = toppings      @property  def pineapple_allowed(self):       return False pizza = Pizza(["cheese", "tomato"]) print(pizza.pineapple_allowed) pizza.pineapple_allowed = True  ---------------------- #Output False AttributeError: can't set attribute

class Pizza:      def __init__(self, toppings):           self.toppings = toppings             self._pineapple_allowed = False  @property  def pineapple_allowed(self):      return self._pineapple_allowed  @pineapple_allowed.setter  def pineapple_allowed(self, value):    if value:        password = input("Enter the password: ")    if password == "Sw0rdf1sh!":        self._pineapple_allowed = value    else:        raise ValueError("Alert! Intruder!") --------------------------- #Output False Enter the password to permit pineapple: Sw0rdf1sh! True

পাইথনিকনেস ও প্যাকেজিং

Zen of Python

The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

PEP

Python Enhancement Proposals

অভিজ্ঞ পাইথন প্রোগ্রামারগণ এই ল্যাঙ্গুয়েজের উন্নয়নের জন্য প্রস্তাবনা রাখেন

যেমন, একটি লাইন 80 ক্যারেক্টার এর বেশি লম্বা হওয়া উচিৎ নয়, from module import * ব্যবহার উচিৎ নয়, এক লাইনে একটিই স্টেটমেন্ট থাকা উচিৎ, ইত্যাদি...

ফাংশন আর্গুমেন্ট (বর্ধিত)

def function(named_arg, *args):       print(named_arg)         print(args) function(1, 2, 3, 4, 5)  ------------------------------ #Output 1 (2, 3, 4, 5)

def function(x, y, food="spam"):         print(food) function(1, 2) function(3, 4, "egg")  ----------------- #Output spam egg

def my(x, y=7, *args, **kwargs):       print(x)     print(y)       print(args)       print(kwargs) my(2,3,4,5,6,a=7,b=8) ------------------------ #Output 2 3 (4, 5, 6) {'a': 7, 'b': 8}

টাপল আনপ্যাকিং

numbers = (1, 2, 3) a, b, c = numbers print(a) print(b) print(c)  ---------- #Output 1 2 3

a, b, *c, d = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(a) print(b) print(c) print(d) ----------------------------------- #Output 1 2 [3, 4, 5, 6, 7, 8] 9

টারনারি অপারেটর

a = 7 b = 1 if a >= 5 else 42 print(b)  ------------ #Output 1

else স্টেটমেন্ট (বর্ধিত)

for i in range(10):       if i == 999:           break   else:     print("Unbroken 1")  ----------------- #Output Unbroken 1

try:       print(1) except ZeroDivisionError:       print(2) else:       print(3) try:       print(1/0) except ZeroDivisionError:       print(4) else:       print(5)  -------------------- #Output 1 3 4

__main__

def function():       print("This is a module function") if __name__=="__main__":       print("This is a script") ------------------ #Output This is a script

জরুরি কিছু লাইব্রেরী

Web, Django, Flask, CherryPy

Data Scraping, BeautifulSoup

Math & Science, matplotlib, NumPy, SciPy

Game, Panda3D, pygame

প্যাকেজ

MyPackage/       LICENSE.txt       README.txt     setup.py     mypackage/         __init__.py         sololearn.py         sololearn2.py, __init__.py, setup.py, from distutils.core import setup setup(       name='MyPackage',         version='0.1dev',       packages=['mypackage',],     license='MIT',           long_description=open('README.txt').read(), )

ইউজারের জন্য প্যাকেজিং

windows, py2exe

PyInstaller

cx_Freeze

OSX, py2app, PyInstaller, cx_Freeze

সাথে থাকুন