৪.৩ পাইথন ভাষার সাথে শুরু করা

লেখক:ভাল, তৈরিঃ 2019-04-28 09:55:02, আপডেটঃ

প্রাথমিক ফ্লাফ

সুতরাং, আপনি পাইথন প্রোগ্রামিং ভাষা শিখতে চান কিন্তু একটি সংক্ষিপ্ত এবং এখনও পূর্ণ বৈশিষ্ট্যযুক্ত টিউটোরিয়াল খুঁজে পাচ্ছেন না। এই টিউটোরিয়ালটি আপনাকে 10 মিনিটের মধ্যে পাইথন শেখার চেষ্টা করবে। এটি সম্ভবত একটি টিউটোরিয়াল এবং একটি চিটশীটের মধ্যে একটি ক্রস হিসাবে এটি একটি টিউটোরিয়াল নয়, তাই এটি আপনাকে শুরু করার জন্য কিছু মৌলিক ধারণা দেখায়। স্পষ্টতই, যদি আপনি সত্যিই একটি ভাষা শিখতে চান তবে আপনাকে এটিতে কিছুক্ষণের জন্য প্রোগ্রাম করতে হবে। আমি ধরে নেব যে আপনি ইতিমধ্যে প্রোগ্রামিংয়ের সাথে পরিচিত এবং তাই বেশিরভাগ অ-ভাষা-নির্দিষ্ট জিনিসগুলি এড়িয়ে যাবেন। গুরুত্বপূর্ণ কীওয়ার্ডগুলি হাইলাইট করা হবে যাতে আপনি সহজেই তাদের সনাক্ত করতে পারেন। এছাড়াও, কারণ, এই টিউটোরিয়ালের সংক্ষিপ্ততার কারণে, কিছু জিনিস সরাসরি কোডে চালু করা হবে এবং কেবল সংক্ষেপে মন্তব্য করা হবে।

আমরা পাইথন ৩-এ ফোকাস করব, যেহেতু এটি আপনার ব্যবহার করা উচিত। বইয়ের সমস্ত উদাহরণ পাইথন ৩-এ রয়েছে এবং যদি কেউ আপনাকে ২ ব্যবহার করার পরামর্শ দেয়, তারা আপনার বন্ধু নয়।

বৈশিষ্ট্য

পাইথন শক্তিশালীভাবে টাইপ করা হয় (অর্থাৎ প্রকারগুলি প্রয়োগ করা হয়), গতিশীলভাবে, অব্যক্তভাবে টাইপ করা হয় (অর্থাৎ আপনাকে ভেরিয়েবলগুলি ঘোষণা করতে হবে না), কেস সংবেদনশীল (অর্থাৎ var এবং VAR দুটি ভিন্ন ভেরিয়েবল) এবং অবজেক্ট-ভিত্তিক (অর্থাৎ সবকিছুই একটি বস্তু) ।

সাহায্য পেতে

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

>>> help(5)
Help on int object:
(etc etc)

>>> dir(5)
['__abs__', '__add__', ...]

>>> abs.__doc__
'abs(number) -> number

Return the absolute value of the argument.

সিনট্যাক্স

পাইথনের কোনও বাধ্যতামূলক বিবৃতি সমাপ্তির অক্ষর নেই এবং ব্লকগুলি ইন্ডেন্টেশন দ্বারা নির্দিষ্ট করা হয়। একটি ব্লক শুরু করতে ইন্ডেন্ট, শেষ করতে ডিডেনট। যে বিবৃতিগুলি ইন্ডেন্টেশন স্তরের প্রত্যাশা করে সেগুলি একটি দম্পতিতে শেষ হয় (:). মন্তব্যগুলি পাউন্ড (#) চিহ্ন দিয়ে শুরু হয় এবং এক-লাইন, বহু-লাইন স্ট্রিংগুলি বহু-লাইন মন্তব্যের জন্য ব্যবহৃত হয়। মানগুলি সমান চিহ্ন (=) দিয়ে নির্ধারিত হয় (আসলে, বস্তুগুলি নামের সাথে আবদ্ধ) এবং সমতা পরীক্ষা দুটি সমান চিহ্ন (==) ব্যবহার করে করা হয়। আপনি += এবং -= অপারেটরগুলি যথাক্রমে ডানদিকে পরিমাণ দ্বারা ব্যবহার করে মানগুলি বৃদ্ধি / হ্রাস করতে পারেন। এটি স্ট্রিং সহ অনেক ডেটা টাইপগুলিতে কাজ করে। আপনি এক লাইনে একাধিক ভেরিয়েবলও ব্যবহার করতে পারেন। উদাহরণস্বরূপঃ

>>> myvar = 3
>>> myvar += 2
>>> myvar
5
>>> myvar -= 1
>>> myvar
4
"""This is a multiline comment.
The following lines concatenate the two strings."""
>>> mystring = "Hello"
>>> mystring += " world."
>>> print(mystring)
Hello world.
# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.
>>> myvar, mystring = mystring, myvar

তথ্যের ধরন

পাইথনে উপলব্ধ ডেটা স্ট্রাকচারগুলি হল তালিকা, টুপল এবং অভিধান। সেটগুলি সেট লাইব্রেরিতে উপলব্ধ (কিন্তু পাইথন ২.৫ এবং পরবর্তী সংস্করণে অন্তর্নির্মিত) । তালিকাগুলি এক-মাত্রিক অ্যারেগুলির মতো (তবে আপনার অন্যান্য তালিকার তালিকাও থাকতে পারে), অভিধানগুলি অ্যাসোসিয়েটিভ অ্যারে (হ্যাশ টেবিল নামেও পরিচিত) এবং টুপলগুলি অপরিবর্তনীয় এক-মাত্রিক অ্যারে (পাইথন arrays যে কোনও ধরণের হতে পারে, তাই আপনি উদাহরণস্বরূপ তালিকা / অভিধান / টুপলেসগুলিতে পূর্ণসংখ্যা, স্ট্রিং ইত্যাদি মিশ্রিত করতে পারেন) । অ্যারের সমস্ত ধরণের প্রথম আইটেমের সূচক 0। নেতিবাচক সংখ্যাগুলি শেষ থেকে শুরুতে গণনা করে, -1 হল শেষ আইটেম। ভেরিয়েবলগুলি ফাংশনগুলিতে নির্দেশ করতে পারে। ব্যবহারটি নিম্নরূপঃ

>>> sample = [1, ["another", "list"], ("a", "tuple")]
>>> mylist = ["List item 1", 2, 3.14]
>>> mylist[0] = "List item 1 again" # We're changing the item.
>>> mylist[-1] = 3.21 # Here, we refer to the last item.
>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}
>>> mydict["pi"] = 3.15 # This is how you change dictionary values.
>>> mytuple = (1, 2, 3)
>>> myfunction = len
>>> print(myfunction(mylist))
3

আপনি একটি কোলন (: ব্যবহার করে অ্যারে পরিসীমা অ্যাক্সেস করতে পারেন। শুরু সূচকটি খালি রেখে প্রথম আইটেমটি অনুমান করে, শেষ সূচকটি ছেড়ে শেষ আইটেমটি অনুমান করে। সূচকটি অন্তর্ভুক্তি-বৈশিষ্ট্যপূর্ণ, তাই [2:10] নির্দিষ্ট করা আইটেমগুলি [2] (তৃতীয় আইটেম, 0-সূচকতার কারণে) থেকে [9] (দশম আইটেম), অন্তর্ভুক্তি (8 আইটেম) ফিরিয়ে দেবে। নেতিবাচক সূচকগুলি শেষ আইটেম থেকে পিছনে গণনা করে (এইভাবে -1 হল শেষ আইটেম) এভাবেঃ

>>> mylist = ["List item 1", 2, 3.14]
>>> print(mylist[:])
['List item 1', 2, 3.1400000000000001]
>>> print(mylist[0:2])
['List item 1', 2]
>>> print(mylist[-3:-1])
['List item 1', 2]
>>> print(mylist[1:])
[2, 3.14]
# Adding a third parameter, "step" will have Python step in
# N item increments, rather than 1.
# E.g., this will return the first item, then go to the third and
# return that (so, items 0 and 2 in 0-indexing).
>>> print(mylist[::2])
['List item 1', 3.14]

স্ট্রিং

এর স্ট্রিংগুলি একক বা ডাবল উদ্ধৃতি চিহ্ন ব্যবহার করতে পারে, এবং আপনি অন্য ধরণের ব্যবহার করে একটি স্ট্রিংয়ের ভিতরে এক ধরণের উদ্ধৃতি চিহ্ন থাকতে পারে (যেমন তিনি বলেছেন hello. বৈধ) ।ট্রিপল ডাবল (বা একক) কোটেশন(). পাইথন স্ট্রিং সর্বদা ইউনিকোড, কিন্তু অন্য একটি স্ট্রিং টাইপ আছে যা খাঁটি বাইট। এগুলিকে বাইস্ট্রিং বলা হয় এবং b উপসর্গ দিয়ে প্রতিনিধিত্ব করা হয়, উদাহরণস্বরূপ bহ্যালো \xce\xb1। মান দিয়ে একটি স্ট্রিং পূরণ করতে, আপনি % (মডুলো) অপারেটর এবং একটি টিপল ব্যবহার করেন। প্রতিটি %s টিপল থেকে একটি আইটেম দিয়ে প্রতিস্থাপিত হয়, বাম থেকে ডানে, এবং আপনি অভিধান প্রতিস্থাপনও ব্যবহার করতে পারেন, যেমনঃ

>>> print("Name: %s\
Number: %s\
String: %s" % (myclass.name, 3, 3 * "-"))
Name: Stavros
Number: 3
String: ---

strString = """This is
a multiline
string."""

# WARNING: Watch out for the trailing s in "%(key)s".
>>> print("This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"})
This is a test.

>>> name = "Stavros"
>>> "Hello, {}!".format(name)
Hello, Stavros!
>>> print(f"Hello, {name}!")
Hello, Stavros!

প্রবাহ নিয়ন্ত্রণের বিবৃতি

প্রবাহ নিয়ন্ত্রণ বিবৃতি if, for, এবং while হয়। কোন switch নেই; পরিবর্তে, if ব্যবহার করুন। একটি তালিকার সদস্যদের মাধ্যমে তালিকাভুক্ত করতে for ব্যবহার করুন। আপনি যে সংখ্যার ক্রমটি পুনরাবৃত্তি করতে পারেন তা পেতে, range() ব্যবহার করুন। এই বিবৃতিগুলির সিনট্যাক্স নিম্নরূপঃ

rangelist = list(range(10))
>>> print(rangelist)
range(0, 10)
>>> print(list(rangelist))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for number in rangelist:
    # Check if number is one of
    # the numbers in the tuple.
    if number in (3, 4, 7, 9):
        # "Break" terminates a for without
        # executing the "else" clause.
        break
    else:
        # "Continue" starts the next iteration
        # of the loop. It's rather useless here,
        # as it's the last statement of the loop.
        continue
else:
    # The "else" clause is optional and is
    # executed only if the loop didn't "break".
    pass # Do nothing

if rangelist[1] == 2:
    print("The second item (lists are 0-based) is 2")
elif rangelist[1] == 3:
    print("The second item (lists are 0-based) is 3")
else:
    print("Dunno")

while rangelist[1] == 1:
    print("We are trapped in an infinite loop!")

কার্যাবলী

ফাংশনগুলি def কীওয়ার্ড দিয়ে ঘোষণা করা হয়। বাধ্যতামূলক আর্গুমেন্টগুলির পরে ডিফল্ট মান বরাদ্দ করে ফাংশন ঘোষণায় ঐচ্ছিক আর্গুমেন্টগুলি সেট করা হয়। নামযুক্ত আর্গুমেন্টগুলির জন্য, আর্গুমেন্টের নামটির একটি মান বরাদ্দ করা হয়। ফাংশনগুলি একটি টিপল ফেরত দিতে পারে (এবং টিপল আনপ্যাকিং ব্যবহার করে আপনি কার্যকরভাবে একাধিক মান ফেরত দিতে পারেন) । ল্যাম্বডা ফাংশনগুলি অ্যাড হক ফাংশন যা একটি একক বিবৃতি নিয়ে গঠিত। প্যারামিটারগুলি রেফারেন্স দ্বারা পাস করা হয়, তবে কলার দ্বারা কলার মধ্যে অপরিবর্তনীয় প্রকারগুলি (টিপলস, ইন্টস, স্ট্রিংস ইত্যাদি) পরিবর্তন করা যায় না। এটি কারণ কেবল আইটেমের মেমরি অবস্থান পাস করা হয় এবং একটি ভেরিয়েবলের সাথে অন্য বস্তুকে আবদ্ধ করা পুরানোটিকে বাতিল করে, তাই অপরিবর্তনীয় প্রকারগুলি প্রতিস্থাপিত হয়। উদাহরণস্বরূপঃ

# Same as def funcvar(x): return x + 1
funcvar = lambda x: x + 1
>>> print(funcvar(1))
2

# an_int and a_string are optional, they have default values
# if one is not passed (2 and "A default string", respectively).
def passing_example(a_list, an_int=2, a_string="A default string"):
    a_list.append("A new item")
    an_int = 4
    return a_list, an_int, a_string

>>> my_list = [1, 2, 3]
>>> my_int = 10
>>> print(passing_example(my_list, my_int))
([1, 2, 3, 'A new item'], 4, "A default string")
>>> my_list
[1, 2, 3, 'A new item']
>>> my_int
10

শ্রেণী

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

class MyClass(object):
    common = 10
    def __init__(self):
        self.myvariable = 3
    def myfunction(self, arg1, arg2):
        return self.myvariable

    # This is the class instantiation

>>> classinstance = MyClass()
>>> classinstance.myfunction(1, 2)
3
# This variable is shared by all instances.
>>> classinstance2 = MyClass()
>>> classinstance.common
10
>>> classinstance2.common
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# This will not update the variable on the class,
# instead it will bind a new object to the old
# variable name.
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> MyClass.common = 50
# This has not changed, because "common" is
# now an instance variable.
>>> classinstance.common
10
>>> classinstance2.common
50

# This class inherits from MyClass. The example
# class above inherits from "object", which makes
# it what's called a "new-style class".
# Multiple inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
    # The "self" argument is passed automatically
    # and refers to the class instance, so you can set
    # instance variables as above, but from inside the class.
    def __init__(self, arg1):
        self.myvariable = 3
        print(arg1)

>>> classinstance = OtherClass("hello")
hello
>>> classinstance.myfunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10

ব্যতিক্রম

পাইথনে ব্যতিক্রমগুলি try-except [exceptionname] ব্লকগুলির সাথে পরিচালিত হয়ঃ

def some_function():
    try:
        # Division by zero raises an exception
        10 / 0
    except ZeroDivisionError:
        print("Oops, invalid.")
    else:
        # Exception didn't occur, we're good.
        pass
    finally:
        # This is executed after the code block is run
        # and all exceptions have been handled, even
        # if a new exception is raised while handling.
        print("We're done with that.")

>>> some_function()
Oops, invalid.
We're done with that.

আমদানি

import [libname] কীওয়ার্ড দিয়ে বাহ্যিক লাইব্রেরি ব্যবহার করা হয়। আপনি পৃথক ফাংশনের জন্য from [libname] import [funcname] ব্যবহার করতে পারেন। এখানে একটি উদাহরণ রয়েছেঃ

import random
from time import clock

randomint = random.randint(1, 100)
>>> print(randomint)
64

ফাইল I/O

পাইথনে একটি বিস্তৃত অ্যারে লাইব্রেরি রয়েছে। উদাহরণস্বরূপ, এখানে ফাইল I / O এর সাথে সিরিয়ালাইজেশন (ডাটা স্ট্রাকচারগুলিকে pickle লাইব্রেরি ব্যবহার করে স্ট্রিংয়ে রূপান্তর করা) কীভাবে ব্যবহৃত হয় তা এখানেঃ

import pickle
mylist = ["This", "is", 4, 13327]
# Open the file C:\\binary.dat for writing. The letter r before the
# filename string is used to prevent backslash escaping.
myfile = open(r"C:\\binary.dat", "wb")
pickle.dump(mylist, myfile)
myfile.close()

myfile = open(r"C:\\text.txt", "w")
myfile.write("This is a sample string")
myfile.close()

myfile = open(r"C:\\text.txt")
>>> print(myfile.read())
'This is a sample string'
myfile.close()

# Open the file for reading.
myfile = open(r"C:\\binary.dat", "rb")
loadedlist = pickle.load(myfile)
myfile.close()
>>> print(loadedlist)
['This', 'is', 4, 13327]

বিভিন্ন

  • শর্তগুলিকে চেইন করা যেতে পারেঃ 1 < a < 3 যাচাই করে যে a উভয়ই 3 এর চেয়ে কম এবং 1 এর চেয়ে বড়।
  • আপনি অ্যারেতে ভেরিয়েবল বা আইটেম মুছে ফেলতে del ব্যবহার করতে পারেন।
  • তালিকা বোঝার একটি শক্তিশালী উপায় তালিকা তৈরি এবং পরিচালনা করতে প্রদান করে। তারা একটি অভিব্যক্তি অনুসরণ করে একটি for ধারা অনুসরণ করে শূন্য বা আরো if বা for ধারা, যেমনঃ
>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print([x * y for x in lst1 for y in lst2])
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print([x for x in lst1 if 4 > x > 1])
[2, 3]
# Check if a condition is true for any items.
# "any" returns true if any item in the list is true.
>>> any([i % 3 for i in [3, 3, 4, 4, 3]])
True
# This is because 4 % 3 = 1, and 1 is true, so any()
# returns True.

# Check for how many items a condition is true.
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 4)
2
>>> del lst1[0]
>>> print(lst1)
[2, 3]
>>> del lst1
  • গ্লোবাল ভেরিয়েবলগুলি ফাংশনের বাইরে ঘোষণা করা হয় এবং কোনও বিশেষ ঘোষণা ছাড়াই পড়তে পারে, তবে আপনি যদি তাদের কাছে লিখতে চান তবে আপনাকে অবশ্যই global কীওয়ার্ড দিয়ে ফাংশনের শুরুতে তাদের ঘোষণা করতে হবে, অন্যথায় পাইথন সেই বস্তুটিকে একটি নতুন স্থানীয় ভেরিয়েবলের সাথে আবদ্ধ করবে (সাবধান হন, এটি একটি ছোট ধরা যা আপনি যদি এটি না জানেন তবে এটি আপনাকে পেতে পারে) । উদাহরণস্বরূপঃ
number = 5

def myfunc():
    # This will print 5.
    print(number)

def anotherfunc():
    # This raises an exception because the variable has not
    # been bound before printing. Python knows that it an
    # object will be bound to it later and creates a new, local
    # object instead of accessing the global one.
    print(number)
    number = 3

def yetanotherfunc():
    global number
    # This will correctly change the global.
    number = 3

উপসংহার

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


আরো