Python Keyword
Python

Python Keyword

Shayaike Salvy
Shayaike Salvy

Table of Contents

Stack Journal - Python Keywords

Man Eating Chicken ( মানুষ মুরগী খায় ) এবং Man-eating Chicken (মানুষখেকো মুরগী )

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

আপনি যখন কোড লিখছেন, আপনার ব্যবহৃত function অথবা variable এর নামগুলির জন্য আপনি নিজেই সমস্যার সম্মুখীন হতে পারেন।

উদাহরণস্বরূপ, নিম্নলিখিত কোডটি সঠিক মনে হতে পারে, তবে এটি যখন RUN করা হবে তখন error দেখা দিবে:

False = "Hello world"
print(False)

এই কোডটি কাজ করছে না কেনো? কারণ “this” এই শব্দটি জাভাস্ক্রিপ্টের একটি keyword বা সংরক্ষিত শব্দ (Reserved Word)। জাভাস্ক্রিপ্টে এমন বেশ কয়েকটি keyword রয়েছে , যেগুলি আপনি function অথবা variable এর নাম হিসাবে ব্যবহার করতে পারবেন না।

প্রতিটি প্রোগ্রামিং ল্যাঙ্গুয়াজেই এরকম keyword বা reserved word থাকে। যেমন, পাইথনে আপনি function অথবা variable এর নাম break বা yield রাখতে পারবেন না। জাভাতে কোন function অথবা variable এর নাম class রাখতে পারবেন না। এই কীওয়ার্ডগুলি প্রোগ্রামিং ল্যাংগুয়েজের ডিজাইনার দ্বারা সংরক্ষণ করা হয়েছে । এগুলি ল্যাঙ্গুয়েজগুলির সিনট্যাক্সের জন্য গুরুত্বপূর্ণ : for, if, else, then, var, yield, set, function or fun, etc.

কেন প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি নিজের জন্য শব্দ সংরক্ষণ করে?

এখানে দুটি মূল কারণ রয়েছে।

প্রথমত, এটি প্রোগ্রামারদের function অথবা variable এর জন্য সংরক্ষিত শব্দ ব্যবহার করা থেকে বিরত রাখে, যা কোড পরিষ্কার রাখতে সাহায্য করে। কোনো একটা বন্ধুর সাথে কথোপকথন করার কথা কল্পনা করুন, যিনি “play” শব্দটি ব্যবহার করে বোঝাতে চায়, “football”! আপনার সেই বন্ধুটি আপনাকে আমন্ত্রন জানালো ফুটবল খেলার জন্য, এবং বলল “Let’s Play play”! এখন আপনি এই কথাটি দিয়ে কি বুঝবেন? এবং আপনি যখন আবার জিজ্ঞাসা করবেন “What is play Play?” এবং তার জবাব শুনে যদি আপনারই মনে হবে যে আপনি বৃথা চেষ্টা করছেন, তখন আপনি চরম বিরক্ত হবেন।

একইভাবে, যদি আপনার যদি কোনো function তৈরি করার প্রয়োজন পরে এবং এর নাম রেখে দিলেন for or if or else তাহলে যেভাবে আপনি “let’s play play” নিয়ে বিভ্রান্ত হতেন, এখন আপনার কম্পিউটারও বিভ্রান্ত হয়ে যাবে।

for = 10
if if > for: 
    print("if is greater than for")
else:
    print("if is smaller then for")

আপনি যদি এরকম লিখেন, তাহলে আপনার জন্য এখন হয়তো এই কোড বোঝা অতটা কষ্টসাধ্য হবে না।। তবে অন্য কেউ এতো সহজে এই কোড বুঝবে না এবং এক মাস পরে আপনিও সম্ভবত বুঝতে পারবেন না ।

দ্বিতীয়ত, প্রোগ্রামিং ল্যাঙ্গিয়েজগুলোতে সংরক্ষিত শব্দ(reserved word) ব্যবহার করার কারণ হল programming language কে সহজ করা এবং প্রোগ্রামিং ভাষার অস্পষ্টতা দূর করা । প্রোগ্রামিং ভাষাকে , মানুষের ভাষা থেকে আলাদা করে অস্পষ্টতা।

যেমনঃ Man Eating Chicken ( মানুষ মুরগী খায় ) এবং Man-eating Chicken (মানুষখেকো মুরগী )

শুরুতেই আমরা দেখলাম শুধু মাত্র একটা “-” ( ড্যাশ ) ব্যবহারের কারনে, এই দুটি বাক্য যে অর্থের তারতম্য ঘটেছে। বলা যেতে পারে বাক্য দুটি একেবারেই বিপরীতধর্মী অর্থ বহন করছে, আমরা মানুষরা কথাটি দিয়ে কি বুঝানো হয়েছে এটা হয়তো আচ করতে পারলেও, দুঃখজনক ব্যাপার হল আমাদের কম্পিউটার এতটা বুদ্ধিমান না।

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

সুতরাং, সংক্ষেপে বলা যায়, প্রতিটি ভাষাতেই কিছু শব্দের একটি ছোট সেট থাকে যা ভাষার জন্য গুরুত্বপূর্ণ। এবং আমরা ভাষার এই শব্দের ছোট সেট গুলোকেই, keyword বা সংরক্ষিত শব্দ বলি। আপনি কখনই function অথবা variable এর নামের জন্য এই keyword গুলি ব্যবহার করতে পারবেন না। কারণ, সেটি ভাষার অস্পষ্টতার কারণ হতে পারে এবং কোড পড়া ও প্রোগ্রামটি editing উভয় ক্ষেত্রেই, কোডটি বোঝা আরো কষ্টসাধ্য করে তুলবে।

Python Keyword

পাইথন ৩.৭ আপডেটে টোটাল কি-ওয়ার্ড ছিল ৩৩ টা । এখন পাইথন ৩.৮ ভার্শন চলছে , এবং ৩.৮ ভার্শনে keyword আছে ৩৫ টা। আমরা এর থেকে বুঝতে ভবিষ্যতে তা আরো বড়তে পারে। নিচে পাইথন ৩.৮ ভার্শনের ৩৫টা কি-ওয়ার্ড দেওয়া হলঃ

নতুন ২টা কি-ওয়ার্ড হল await এবং async

| Keyword  | Description                                                                                           |
|----------|-------------------------------------------------------------------------------------------------------|
| and      | A logical operator                                                                                    |
| as       | To create an alias                                                                                    |
| assert   | For debugging                                                                                         |
| break    | To break out of a loop                                                                                |
| class    | To define a class                                                                                     |
| continue | To continue to the next iteration of a loop                                                           |
| def      | To define a function                                                                                  |
| del      | To delete an object                                                                                   |
| elif     | Used in conditional statements, same as else if                                                       |
| else     | Used in conditional statements                                                                        |
| except   | Used with exceptions, what to do when an exception occurs                                             |
| False    | Boolean value, result of comparison operations                                                        |
| finally  | Used with exceptions, a block of code that will be executed no matter if there is an exception or not |
| for      | To create a for loop                                                                                  |
| from     | To import specific parts of a module                                                                  |
| global   | To declare a global variable                                                                          |
| if       | To make a conditional statement                                                                       |
| import   | To import a module                                                                                    |
| in       | To check if a value is present in a list, tuple, etc.                                                 |
| is       | To test if two variables are equal                                                                    |
| lambda   | To create an anonymous function                                                                       |
| None     | Represents a null value                                                                               |
| nonlocal | To declare a non-local variable                                                                       |
| not      | A logical operator                                                                                    |
| or       | A logical operator                                                                                    |
| pass     | A null statement, a statement that will do nothing                                                    |
| raise    | To raise an exception                                                                                 |
| return   | To exit a function and return a value                                                                 |
| True     | Boolean value, result of comparison operations                                                        |
| try      | To make a try...except statement                                                                      |
| while    | To create a while loop                                                                                |
| with     | Used to simplify exception handling                                                                   |
| yield    | To end a function, returns a generator                                                                |
| async    | is used to declare a function as a coroutine                                                          |
| await    | passes function control back to the event loop.                                                       |

Reference: W3schools, Programiz, GeeksforGeeks, Kidscodecs