Python တွင် identifiers (variables အမည်များ၊ လုပ်ဆောင်ချက်များ၊ အတန်းများ စသည်) ကို စည်းမျဉ်းများနှင့်အညီ သတ်မှတ်ရန် လိုအပ်သည်။ စည်းမျဥ်းစည်းကမ်းများကို မလိုက်နာသော အမည်များကို သတ်မှတ်ဖော်ပြချက်များအဖြစ် အသုံးမပြုနိုင်ဘဲ အမှားအယွင်းများ ဖြစ်ပေါ်လာမည်ဖြစ်သည်။
အောက်ပါအချက်အလက်များကို ဤနေရာတွင် ဖော်ပြပေးထားပါသည်။
- ခွဲခြားသတ်မှတ်မှုများ (အမည်များ) တွင် အသုံးမပြုနိုင်သော အက္ခရာများ
- ASCII ဇာတ်ကောင်များ
- ယူနီကုဒ်အက္ခရာ
- ပုံမှန်ဖြစ်စေခြင်း (ဥပမာ-သင်္ချာ)
- string သည် မှန်ကန်သော identifier ဖြစ်မဖြစ် စစ်ဆေးပါ-
isidentifier()
- သတ်မှတ်ဖော်ပြချက်များ (အမည်များ) (သီးသန့်စကားလုံးများအဖြစ် အသုံးမပြုနိုင်သော စကားလုံးများ)
- အမှတ်အသား (အမည်များ) အဖြစ် အသုံးမပြုသင့်သော စကားလုံးများ၊
- PEP8 အတွက် သဘောတူညီချက်များကို အမည်ပေးခြင်း
အောက်ပါဖော်ပြချက်ကို Python 3 တွင်ပေးထားပြီး Python 2 တွင်ကွဲပြားနိုင်သည်။
- ခွဲခြားသတ်မှတ်မှုများ (အမည်များ) တွင် အသုံးမပြုနိုင်သော အက္ခရာများ
- စာကြောင်းသည် မှန်ကန်သော identifier ရှိ၊ မရှိ စစ်ဆေးပါ- isidentifier()
- သတ်မှတ်ဖော်ပြချက်များ (အမည်များ) (သီးသန့်စကားလုံးများအဖြစ် အသုံးမပြုနိုင်သော စကားလုံးများ)
- အမှတ်အသား (အမည်များ) အဖြစ် အသုံးမပြုသင့်သော စကားလုံးများ၊
- PEP8 အတွက် သဘောတူညီချက်များကို အမည်ပေးခြင်း
ခွဲခြားသတ်မှတ်မှုများ (အမည်များ) တွင် အသုံးမပြုနိုင်သော အက္ခရာများ
ခွဲခြားသတ်မှတ်မှုများ (အမည်များ) အဖြစ် အသုံးမပြုနိုင်သော အက္ခရာများကို ညွှန်ပြသည်။
ထို့အပြင်၊ ရေးရန်အကြောင်းအရာများစွာရှိသော်လည်း၊ အခြေခံအားဖြင့်အောက်ပါအတိုင်းမှတ်သားထားရန်လိုသည်။
- စာလုံးအကြီးနှင့် အသေး၊ ဂဏန်းများနှင့် အောက်မှတ်များကို သုံးပါ။
- ပထမ (ပထမ) အက္ခရာသည် နံပါတ်မဖြစ်နိုင်ပါ။
ASCII ဇာတ်ကောင်များ
ခွဲခြားသတ်မှတ်မှုများ (အမည်များ) အဖြစ်အသုံးပြုနိုင်သော ASCII အက္ခရာများသည် စာလုံးအကြီးနှင့် အသေးအက္ခရာများ (A~Z၊a~z)၊ နံပါတ်များ (0~9) နှင့် underscore (_) တို့ဖြစ်သည်။ အက္ခရာသည် အကြီးအသေး အထိမခံပါ။
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
သို့သော် အစတွင် အမှတ်အသားတစ်ခုသည် အထူးအဓိပ္ပာယ်ရှိနိုင်သည်ကို သတိပြုပါ။
ယူနီကုဒ်အက္ခရာ
Python 3 မှစ၍ Unicode အက္ခရာများကိုလည်း အသုံးပြုနိုင်ပါသည်။
変数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
စာကြောင်းသည် မှန်ကန်သော identifier ရှိ၊ မရှိ စစ်ဆေးပါ- isidentifier()
string method isidentifier() ဖြင့် string method သည် identifier အဖြစ် မှန်ကန်မှုရှိမရှိ စစ်ဆေးနိုင်ပါသည်။
၎င်းသည် identifier အဖြစ် မှန်ကန်ပါက၊ မမှန်ပါက false ပြန်ပေးသည်။
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
သတ်မှတ်ဖော်ပြချက်များ (အမည်များ) (သီးသန့်စကားလုံးများအဖြစ် အသုံးမပြုနိုင်သော စကားလုံးများ)
အချို့သော စကားလုံးများ (သီးသန့်စကားလုံးများ) သည် ၎င်းတို့ကို ခွဲခြားသတ်မှတ်ခြင်း (အမည်များ) အဖြစ် တရားဝင်စာကြောင်းများဖြစ်သည့်တိုင် အမှတ်အသားအဖြစ် အသုံးပြု၍မရပါ။
သီးသန့်စကားလုံးတစ်လုံးသည် identifier အဖြစ် တရားဝင်သော စာကြောင်းဖြစ်သောကြောင့် isidentifier() သည် true ပြန်လာသည်၊ သို့သော် ၎င်းကို identifier အဖြစ်အသုံးပြုပါက အမှားဖြစ်သွားသည်။
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
သီးသန့်စကားလုံးများစာရင်းကို ရယူရန်နှင့် စာကြောင်းတစ်ကြောင်းသည် သီးသန့်စကားလုံးဟုတ်မဟုတ် စစ်ဆေးရန်၊ စံဒစ်ဂျစ်တိုက်၏ အဓိကစကားလုံး module ကို အသုံးပြုပါ။
အမှတ်အသား (အမည်များ) အဖြစ် အသုံးမပြုသင့်သော စကားလုံးများ၊
ဥပမာအားဖြင့် Python ၏ built-in လုပ်ဆောင်ချက်များ၏ အမည်များကို identifiers အဖြစ် အသုံးပြုနိုင်ပြီး၊ ထို့ကြောင့် ၎င်းတို့အား တန်ဖိုးအသစ်များကို ကိန်းရှင်များအဖြစ် သတ်မှတ်နိုင်ပါသည်။
ဥပမာအားဖြင့်၊ len() သည် စာရင်းတစ်ခုရှိ ဒြပ်စင်အရေအတွက် သို့မဟုတ် string တစ်ခုရှိ စာလုံးအရေအတွက်ကို ပြန်ပေးသည့် built-in လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။
print(len)
# <built-in function len>
print(len('abc'))
# 3
ဤအမည် len တွင် တန်ဖိုးအသစ်တစ်ခုသတ်မှတ်ပါက မူရင်းလုပ်ဆောင်ချက်ကို ထပ်ရေးပြီး အသုံးမပြုနိုင်တော့ပါ။ တန်ဖိုးအသစ်တစ်ခုသတ်မှတ်သည့်အခါ အမှားအယွင်း သို့မဟုတ် သတိပေးချက်ထုတ်မည်မဟုတ်ကြောင်း သတိပြုပါ။
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
နောက်ထပ်အဖြစ်များသောအမှားမှာ list= [0, 1, 2] ကိုအသုံးပြုခြင်းဖြစ်ပြီး၊ ၎င်းသည် list() ကိုအသုံးပြုရန်မဖြစ်နိုင်ပါ။ သတိထားပါ။
PEP8 အတွက် သဘောတူညီချက်များကို အမည်ပေးခြင်း
PEP သည် Python Enhancement Proposal ကို ကိုယ်စားပြုသည်၊၊ Python ၏ အင်္ဂါရပ်အသစ်များနှင့် အခြားရှုထောင့်များကို ဖော်ပြသည့် စာတမ်းဖြစ်သည်။
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 သည် အဋ္ဌမမြောက်ဖြစ်ပြီး ၎င်းသည် “ Python ကုဒ်အတွက် စတိုင်လ်လမ်းညွှန်” ကိုဖော်ပြထားသည်၊ ဆိုလိုသည်မှာ Python အတွက်စတိုင်လမ်းညွှန်ဖြစ်သည်။
အမည်ပေးခြင်း စည်းမျဥ်းများကိုလည်း ဖော်ပြထားပါသည်။
အသေးစိတ်အချက်အလက်များအတွက် အထက်ဖော်ပြပါလင့်ခ်ကို ကြည့်ပါ၊ သို့သော် ဥပမာအားဖြင့်၊ အောက်ပါအရေးအသားပုံစံကို အကြံပြုထားသည်။
- မော်ဂျူး
lowercase_underscore
- စာလုံးသေး + အောက်မှတ်
- အထုပ်
lowercase
- စာလုံးအသေးအားလုံး
- အတန်းများ၊ ခြွင်းချက်များ
CapitalizedWords
(CamelCase
)- စာလုံးတစ်လုံး၏ ပထမအက္ခရာကို စာလုံးကြီးပါ၊ အောက်ခြေအမှတ်မရှိပါ။
- လုပ်ဆောင်ချက်များ၊ ကိန်းရှင်များနှင့် နည်းလမ်းများ
lowercase_underscore
- စာလုံးသေး + အောက်မှတ်
- စဉ်ဆက်မပြတ်
ALL_CAPS
- စာလုံးကြီး + အောက်မှတ်များ
သို့ရာတွင်၊ သင့်အဖွဲ့အစည်းတွင် ၎င်း၏ကိုယ်ပိုင်အမည်ပေးခြင်းဆိုင်ရာ သဘောတူညီချက်များမရှိပါက၊ PEP8 ကိုလိုက်နာရန် အကြံပြုထားသည်။