পাইথনে, আইডেন্টিফায়ার (ভেরিয়েবল, ফাংশন, ক্লাস ইত্যাদির নাম) নিয়ম অনুযায়ী সংজ্ঞায়িত করা প্রয়োজন। যেসব নাম নিয়ম মেনে চলে না তাদের শনাক্তকারী হিসেবে ব্যবহার করা যাবে না এবং এর ফলে একটি ত্রুটি হবে।
নিম্নলিখিত তথ্য এখানে প্রদান করা হয়।
- যেসব অক্ষর শনাক্তকারী (নাম) ব্যবহার করা যায় এবং ব্যবহার করা যায় না
- ASCII অক্ষর
- ইউনিকোড অক্ষর
- স্বাভাবিককরণ (যেমন গণিতে)
- স্ট্রিংটি একটি বৈধ শনাক্তকারী কিনা তা পরীক্ষা করুন:
isidentifier()
- যেসব শব্দ শনাক্তকারী (নাম) হিসাবে ব্যবহার করা যাবে না (সংরক্ষিত শব্দ)
- শনাক্তকারী (নাম) হিসাবে ব্যবহার করা উচিত নয় এমন শব্দ
- PEP8 এর জন্য নামকরণ কনভেনশন
নিম্নলিখিত বিবরণ পাইথন 3 এ দেওয়া হয়েছে, এবং পাইথন 2 এ ভিন্ন হতে পারে।
যেসব অক্ষর শনাক্তকারী (নাম) ব্যবহার করা যায় এবং ব্যবহার করা যায় না
এমন অক্ষর নির্দেশ করে যা সনাক্তকারী (নাম) হিসাবে ব্যবহার করা যায় না এবং হতে পারে না।
উপরন্তু, যদিও লেখার জন্য অনেক কিছু আছে, মূলত আপনাকে যা মনে রাখতে হবে তা হল নিম্নলিখিতগুলি।
- বড় হাতের এবং ছোট হাতের অক্ষর, সংখ্যা এবং আন্ডারস্কোর ব্যবহার করুন।
- প্রথম (প্রথম) অক্ষর একটি সংখ্যা হতে পারে না।
ASCII অক্ষর
ASCII অক্ষর যা শনাক্তকারী (নাম) হিসাবে ব্যবহার করা যেতে পারে তা হল বড় হাতের এবং ছোট হাতের বর্ণমালা (A ~ Z, a ~ z), সংখ্যা (0 ~ 9), এবং আন্ডারস্কোর (_)। বর্ণমালা কেস-সংবেদনশীল।
AbcDef_123 = 100
print(AbcDef_123)
# 100
আন্ডারস্কোর ছাড়া অন্য চিহ্ন ব্যবহার করা যাবে না।
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
এছাড়াও, শুরুতে সংখ্যা ব্যবহার করা যাবে না (প্রথম অক্ষর)।
# 1_abc = 100
# SyntaxError: invalid token
আন্ডারস্কোরগুলিও শুরুতে ব্যবহার করা যেতে পারে।
_abc = 100
print(_abc)
# 100
যাইহোক, মনে রাখবেন যে শুরুতে একটি আন্ডারস্কোর একটি বিশেষ অর্থ থাকতে পারে।
ইউনিকোড অক্ষর
পাইথন 3 থেকে, ইউনিকোড অক্ষরগুলিও ব্যবহার করা যেতে পারে।
変数1 = 100
print(変数1)
# 100
সব ইউনিকোড অক্ষর ব্যবহার করা যাবে না, এবং ইউনিকোড বিভাগের উপর নির্ভর করে, কিছু ব্যবহার করা যাবে না। উদাহরণস্বরূপ, বিরামচিহ্ন এবং চিত্রগ্রামের মতো প্রতীক ব্যবহার করা যাবে না।
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
ইউনিকোড বিভাগের কোডগুলির জন্য সরকারী ডকুমেন্টেশন দেখুন যা ব্যবহার করা যেতে পারে।
অনেক ক্ষেত্রে, চাইনিজ অক্ষর ইত্যাদি ব্যবহার করার কোন সুবিধা নেই, কেবল কারণ ইউনিকোড অক্ষরও ব্যবহার করা যেতে পারে (ত্রুটি ছাড়াই)।
স্বাভাবিককরণ (যেমন গণিতে)
ইউনিকোড অক্ষরগুলিকে ব্যাখ্যার জন্য স্বাভাবিক রূপ NFKC তে রূপান্তরিত করা হয়। উদাহরণস্বরূপ, পূর্ণ-প্রস্থ বর্ণমালা অর্ধ-প্রস্থ বর্ণমালায় রূপান্তরিত হয় (ASCII অক্ষর)।
মনে রাখবেন যে সোর্স কোড একটি ভিন্ন প্রদর্শন দেখালেও, এটি একই বস্তু হিসাবে বিবেচিত হয় এবং ওভাররাইট করা হবে।
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
স্ট্রিংটি একটি বৈধ শনাক্তকারী কিনা তা পরীক্ষা করুন: আইসিডেন্টিফায়ার ()
শনাক্তকারী হিসাবে একটি স্ট্রিং বৈধ কিনা তা স্ট্রিং পদ্ধতি আইডেন্টিফায়ার () দিয়ে চেক করা যায়।
যদি এটি সনাক্তকারী হিসাবে বৈধ হয় তবে এটি সত্য এবং যদি অবৈধ হয় তবে মিথ্যা।
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
যেসব শব্দ শনাক্তকারী (নাম) হিসাবে ব্যবহার করা যাবে না (সংরক্ষিত শব্দ)
কিছু শব্দ (সংরক্ষিত শব্দ) আছে যা শনাক্তকারী হিসাবে ব্যবহার করা যাবে না যদিও সেগুলি শনাক্তকারী (নাম) হিসাবে বৈধ স্ট্রিং হলেও।
যেহেতু একটি সংরক্ষিত শব্দ একটি শনাক্তকারী হিসাবে একটি বৈধ স্ট্রিং, তাই isidentifier () সত্য প্রদান করে, কিন্তু একটি ত্রুটি ঘটে যদি এটি একটি শনাক্তকারী হিসাবে ব্যবহার করা হয়।
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
সংরক্ষিত শব্দের একটি তালিকা পেতে এবং একটি স্ট্রিং একটি সংরক্ষিত শব্দ কিনা তা পরীক্ষা করতে, স্ট্যান্ডার্ড লাইব্রেরির কীওয়ার্ড মডিউল ব্যবহার করুন।
শনাক্তকারী (নাম) হিসাবে ব্যবহার করা উচিত নয় এমন শব্দ
পাইথনের অন্তর্নির্মিত ফাংশনগুলির নাম, উদাহরণস্বরূপ, শনাক্তকারী হিসাবে ব্যবহার করা যেতে পারে, তাই আপনি ভেরিয়েবল হিসাবে তাদের নতুন মান নির্ধারণ করতে পারেন।
উদাহরণস্বরূপ, লেন () একটি অন্তর্নির্মিত ফাংশন যা একটি তালিকার উপাদানগুলির সংখ্যা বা একটি স্ট্রিংয়ের অক্ষরের সংখ্যা প্রদান করে।
print(len)
# <built-in function len>
print(len('abc'))
# 3
আপনি যদি এই নামটি একটি নতুন মান বরাদ্দ করেন, তাহলে মূল ফাংশনটি ওভাররাইট হয়ে যাবে এবং অকেজো হয়ে যাবে। মনে রাখবেন যে একটি নতুন মান নির্ধারণ করার সময় কোন ত্রুটি বা সতর্কতা মুদ্রিত হবে না।
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
আরেকটি সাধারণ ভুল হল তালিকা = [0, 1, 2] ব্যবহার করা, যা তালিকা () ব্যবহার করা অসম্ভব করে তোলে। সতর্ক হোন.
PEP8 এর জন্য নামকরণ কনভেনশন
পিইপি মানে পাইথন বর্ধন প্রস্তাব, একটি নথি যা পাইথনের নতুন বৈশিষ্ট্য এবং অন্যান্য দিক বর্ণনা করে।
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org
PEP8 হল অষ্টম, এবং এটি “পাইথন কোডের জন্য স্টাইল গাইড” অর্থাৎ পাইথনের স্টাইল গাইড বর্ণনা করে।
নামকরণ কনভেনশনগুলিও উল্লেখ করা হয়েছে।
আরো বিস্তারিত জানার জন্য উপরের লিঙ্কটি দেখুন, কিন্তু উদাহরণস্বরূপ, নিম্নলিখিত লেখার স্টাইলটি সুপারিশ করা হয়।
- মডিউল
lowercase_underscore
- লোয়ারকেস + আন্ডারস্কোর
- প্যাকেজ
lowercase
- সব ছোট হাতের অক্ষর
- ক্লাস, ব্যতিক্রম
CapitalizedWords
(CamelCase
)- একটি শব্দের প্রথম অক্ষর বড় করুন, কোন আন্ডারস্কোর নেই
- ফাংশন, ভেরিয়েবল এবং পদ্ধতি
lowercase_underscore
- লোয়ারকেস + আন্ডারস্কোর
- ধ্রুবক
ALL_CAPS
- বড় অক্ষর + আন্ডারস্কোর
যাইহোক, যদি আপনার প্রতিষ্ঠানের নিজস্ব নামকরণের নিয়ম না থাকে, তবে PEP8 অনুসরণ করার পরামর্শ দেওয়া হয়।