আন্ডারস্কোর (_) এর ৫টি প্রধান ব্যবহার
১. ইন্টারপ্রেটারে শেষ এক্সপ্রেশনের ভ্যালু স্টোর
>>> 20
20
>>> _
20
>>> _ + 3
23
পাইথন REPL-এ শেষ এক্সপ্রেশনের রেজাল্ট অটোমেটিক্যালি _-এ সংরক্ষিত হয়।
২. মান উপেক্ষা করা (Unpacking-এ)
x, _, y = (1, 2, 3)
print(x, y) # 1 3 (২ উপেক্ষা করা হয়েছে)
# লুপে ইনডেক্স প্রয়োজন নাই
for _ in range(5):
print("Hello")
# এক্সটেন্ডেড আনপ্যাকিং
first, *_, last = [1, 2, 3, 4, 5]
print(first, last) # 1 5
৩. ভেরিয়েবল/ফাংশন নামকরণ কনভেনশন
| প্যাটার্ন | অর্থ | উদাহরণ |
_name | ইন্টারনাল ব্যবহার (কনভেনশন, এনফোর্সড নয়) | _internal_var |
name_ | পাইথন কিওয়ার্ডের সাথে конфликтуয়াল এড়াতে | class_, def_ |
__name | নেম मैंگلিং (ক্লাসে প্রাইভেট-এর মতো) | __private_attr |
__name__ | ম্যাজিক/ডান্ডার মেথড (পাইথন রিজার্ভড) | __init__, __str__ |
৪. সংখ্যার লিটারেলে ডিজিট সেপারেটর (পাইথন ৩.৬+)
million = 1_000_000
hex_val = 0xFF_FF_FF
binary = 0b1010_0011
print(million) # 1000000
বড় সংখ্যা পড়তে সহজ করে।
৫. Ін্টারন্যাশনালাইজেশন (i18n) / লোকালাইজেশন (l10n)
import gettext
_ = gettext.gettext # কনভেনশনালি _ ফাংশনকে বাইন্ড করা হয়
print(_("Hello, world!")) # অনুবাদিত স্ট্রিং রিটার্ন
C প্রথা অনুযায়ী _() ফাংশনকে ট্রান্সলেশন ফাংশন হিসেবে ব্যবহার করা হয়।
সারসংক্ষেপ টেবিল
| ব্যবহার | উদাহরণ | নোট |
| REPL লাস্ট রেজাল্ট | _ | শুধু ইন্টারেক্টিভ মোডে |
| উপেক্ষা | x, _, y = ... | পাঠযোগ্যতা বাড়ায় |
| প্রাইভেট কনভেনশন | _var | এনফোর্সড নয় |
| নেম मैंگلিং | __var | ক্লাসে _ClassName__var হয়ে যায় |
| ম্যাজিক মেথড | __init__ | পাইথন রিজার্ভড |
| ডিজিট সেপারেটর | 1_000_000 | পাইথন ৩.৬+ |
| i18n ফাংশন | _ = gettext.gettext | কনভেনশন |