Python Identifiers
Python

Python Identifiers

Shayaike Salvy
Shayaike Salvy

Table of Contents

Stack Journal - Python identifiers

এই আর্টিকেলটিতে আমরা পাইথন Identifiers সম্পর্কে জানতে যাচ্ছি। এগুলি পাইথনের বেসিক টপিক এবং প্রোগ্রাম লেখার সময় এগুলি সর্বত্র আমরা ব্যবহার করে থাকি। সুতরাং, এগুলি সম্পর্কে সার্বিক ধারণা রাখাটা খুবই গুরুত্বপূর্ণ। আমরা এই আর্টিকেলটিতে Identifiers লিখার নিয়মগুলি এবং পাইথন Identifiers লিখার সময় অনুসরণ করার সমস্ত অনুশীলনগুলি দেখতে যাচ্ছি।

প্রথমে Identifier এর সংজ্ঞা দিয়ে শুরু করি।

Identifier কি?

আমরা সাধারন ভাবে প্রোগ্রাম লেখার সময় variable, function, class, module অথবা অন্য যে কোন object কে বোঝানোর জন্য যে নাম ব্যবহার করি সেই নামগুলিই হল Identifier। এখন প্রশ্ন হচ্ছে, variable, function, class, module অথবা অন্য যে কোন object এর নামকরন করার কারণ কি?

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

যেহেতু এই আর্টিকেলটি পাইথন নিয়ে লিখা তাই আমরা পাইথন Identifier নিয়ে কথা বলবো।

Python Identifiers নামকরণের নিয়মঃ

আমরা জানি, Identifier কী। এখন আমরা জানবো, আমরা নিয়মগুলি কীভাবে ব্যবহার করব?

Identifier এর নামকরণের সময় আমাদের অবশ্যই আমাদের এমন কিছু নির্দিষ্ট নিয়ম অনুসরণ করতে হবে।

  • পাইথন Identifier টি ছোট হাতের বা বড় হাতের অক্ষর, সংখ্যা অথবা একটি আন্ডারস্কোরের সংমিশ্রণে তৈরি হতে পারবে।
  1. ছোট হাতের অক্ষর (a to z)
  2. বড় হাতের অক্ষর (A থেকে Z)
  3. সংখ্যা (0 থেকে 9)
  4. অ্যান্ডস্কোর (_)

উদাহরনঃ

  • num1FLAG
  • get_user_name
  • userDetails
  • _1234
  • Identifier কখনই একটি নাম্বার বা সংখ্যা দিয়ে শুরু করতে পারে না। যদি আমরা একটি Identifier তৈরি করি যা একটি নাম্বার বা সংখ্যা দিয়ে শুরু হয়, তাহলে আমরা একটি syntax error পাব।
Stack Journal
নামকরনের শুরুতে আমরা নাম্বার বা সংখ্য ব্যবহার করেছি তাই syntax error দেখানো হয়েছ।
  • আমরা Identifier এ বিশেষ চিহ্ন ব্যবহার করতে পারবো না। (!, @, #,,,%,।) এর মতো প্রতীকগুলি ব্যবহার করা যাবে না।
Stack Journal
নামকরন এর সময় আমরা special charterer ব্যবহার করেছি তাই syntax error দেখানো হয়েছে।
  • আমরা keyword কে Identifier হিসাবে ব্যবহার করতে পারবো না। পাইথনে keywords গুলো reserved name, যা পাইথনে built-in ভাবে আছে এবং আমরা ইতোমধ্যে জানি keyword গুলি বিশেষ অর্থ বহন করে। আর এজন্যই আমরা পাইথনের keywords গুলিকে Identifier হিসেবে ব্যবহার করতে পারবো না।
Stack Journal
পাইথন একটি case sensitive প্রোগ্রামিং language। তাই আমরা যখন True = 10, for = 4, global = 100 লিখেছি তখন আমরা syntax error পেয়েছি। কিন্ত আমরা যখন true = 10, For = 4, Global = 100 লিখেছি তখন আমাদের কোন error দেখানো হয়নি।

আপনি যদি সমস্ত keywords গুলোর একটি তালিকাটি দেখতে চান, তাহলে প্রথমে আপনার পাইথন শেলের মধ্যে “help()” টাইপ করে “Enter” করুন এবং এরপরে সমস্ত পাইথন কীওয়ার্ডের তালিকা পেতে “keywords” টাইপ করে “Enter” করুন।

Stack Journal
পাইথন শেলের মধ্যে “help()” টাইপ করে “Enter” করুন এবং এরপরে সমস্ত পাইথন কীওয়ার্ডের তালিকা পেতে “keywords” টাইপ করে “Enter” করুন।
  • পাইথন শেলের মধ্যে “help()” টাইপ করে “Enter” করুন এবং এরপরে সমস্ত পাইথন কীওয়ার্ডের তালিকা পেতে “keywords” টাইপ করে “Enter” করুন।

Testing the Validity of Python Identifiers

পাইথনের কিছু সহায়ক function রয়েছে যা ব্যবহার করে আমরা নিশ্চিত হতে পারবো যে String টি keyword অথবা Valid Identifier কি না।

  • String টি keyword কি না তা জানার জন্য পাইথনে একটা keyword Module ( .iskeyword ) আছে।

উদাহরনঃ

import keyword print( keyword.iskeyword(“var”) )

print( keyword.iskeyword(“False”) )

print( keyword.iskeyword(“continue”) )

print( keyword.iskeyword(“count”) )

OUTPUT

False

True

True

False

  • str.isidentifier() function ব্যবহার করে আমরা দেখে নিতে পারবো যে আমরা যেই Identifier টি ব্যবহার করতে চাচ্ছি, সেই Identifier টি ব্যবহার করা যাবে কি না।

উদাহরনঃ

  • print( “name”.isidentifier() )
  • print( “#today”.isidentifier() )
  • print( “_12hello”.isidentifier() )
  • print( “8cellos”.isidentifier() )

OUTPUT

True

False

True

False

Best Practices for Python Identifiers

naming convention অনুসরণ করাটা খুবই গুরুত্বপূর্ণ, এটা একরকম বাধ্যতামূলকও বলা যেতে পারে। কিন্তু পাইথন community তে আরো কয়েকটি নির্দেশিকায়েছে যা বাধ্যতামূলক নয় তবে এমন কিছু নির্দেশিকা অনুসরণ করার পরামর্শ দেওয়া হয়েছে। এর মুল উদ্দেশ্য হচ্ছে, বিষয়গুলি বোঝা যেন সবার পক্ষে সুবিধাজনক বা সহজ হয়। চলুন দেখা যাক এই নির্দেশিকাগুলি কী।

  • Class names বড় হাতের অক্ষর দিয়ে শুরু করা উচিত এবং অন্যান্য সমস্ত identifiers ছোট হাতের অক্ষর দিয়ে শুরু করা উচিত।
  • underscore(“_”) দিয়ে private identifier শুরু করা উচিত। দ্রষ্টব্য, variable কে private করার জন্য এটির প্রয়োজন হয় না কিন্তু প্রোগ্রামটি দেখে যাতে সহজে private variables এবং public variables এর মধ্যে পার্থক্য করা যায়।
  • magic methods নামের দুপাশে double underscores (“__”) ব্যবহার করতে হবে এবং এগুলি অন্য কোথাও ব্যবহার করা যাবে না। পাইথন এর built-in magic methods এ এই syntax ব্যবহার করা হয়। উদাহরণস্বরূপ: “init” , “len”
  • Double underscores (“__”) কেবল তখনই ব্যবহার করা হয় যখন আপনি পাইথন এ mangling নিয়ে কাজ করবেন।
  • সবসময় একটু বড় এবং সঠিক নাম ব্যবহার করতে হবে। যাতে করে, অন্যকেউ অথবা আপনি পরে সহজের এই নাম দেখে বুঝতে পারেন কোনটা কি। i=1 এর চেয়ে index=1 ব্যাবহার করাটাই শ্রেয়।
  • identifier হিসেবে ব্যাবহার করার জন্য যদি একাধিক শব্দের প্রয়োজন পরে তাহলে শব্দগুলোকে একত্রিত করতে, আপনার underscore(_) ব্যবহার করা উচিত। উদাহরণস্বরূপ: get_user_details
  • variables এর নামকরণের জন্য camel case ব্যবহার করুন। উদাহরণস্বরূপ: fullName, getAddress, testModeOn ইত্যাদি

Reserved Classes of Python Identifiers

Stack Journal - Reserved Classes of Python Identifiers
Reserved Classes of Python Identifiers
  • Single leading underscore ( “_*”) এই identifier টি interactive interpreter এর শেষ মূল্যায়নের ফলাফল সংরক্ষণ করতে ব্যবহৃত হয়। শেষ মূল্যায়নের ফলাফলগুলি __ builtin__ module এ সংরক্ষণ করা হয়। এগুলি private variables এবং এগুলি “from module import”* দ্বারা import করা হয় না। উদাহরণস্বরূপ: “_var”, “_bar
  • Double leading and trailing underscores (“*”) কেবল System-defined নামগুলিই এই Identifier টি ব্যবহার করে। এটা interpreter এবং এর implementations দ্বারা define করা হয়। এই Identifier টি ব্যবহার করে অতিরিক্ত নাম define করার পরামর্শ দেওয়া হয় না। উদাহরণস্বরূপ: “**var”, “**bam”, “**init**”
  • Leading double underscores (“__*”) Class-private name mangling: এই category এর নামগুলি class definition ক্ষেত্রে ব্যবহৃত হয়। derived classes এবং private variables এর base মধ্যে নামের সংঘর্ষ এড়াতে এগুলি, mangled form ব্যবহার করে পুনরায় লেখা হয়েছে। উদাহরণস্বরূপ: “__var”, “__baz