Dalam Python, pengecam (nama pembolehubah, fungsi, kelas, dll.) perlu ditakrifkan mengikut peraturan. Nama yang tidak mengikut peraturan tidak boleh digunakan sebagai pengecam dan akan mengakibatkan ralat.
Maklumat berikut disediakan di sini.
- Aksara yang boleh dan tidak boleh digunakan dalam pengecam (nama)
- aksara ASCII
- aksara Unikod
- normalisasi (cth. dalam matematik)
- Semak sama ada rentetan itu ialah pengecam yang sah:
isidentifier()
- Perkataan yang tidak boleh digunakan sebagai pengecam (nama) (perkataan simpanan)
- Perkataan yang tidak boleh digunakan sebagai pengecam (nama)
- Konvensyen penamaan untuk PEP8
Penerangan berikut diberikan dalam Python 3, dan mungkin berbeza dalam Python 2.
- Aksara yang boleh dan tidak boleh digunakan dalam pengecam (nama)
- Semak sama ada rentetan itu ialah pengecam yang sah: identifier()
- Perkataan yang tidak boleh digunakan sebagai pengecam (nama) (perkataan simpanan)
- Perkataan yang tidak boleh digunakan sebagai pengecam (nama)
- Konvensyen penamaan untuk PEP8
Aksara yang boleh dan tidak boleh digunakan dalam pengecam (nama)
Menunjukkan aksara yang boleh dan tidak boleh digunakan sebagai pengecam (nama).
Di samping itu, walaupun terdapat banyak perkara untuk ditulis, pada asasnya semua yang anda perlu ingat ialah perkara berikut.
- Gunakan huruf besar dan kecil, nombor dan garis bawah.
- Huruf pertama (pertama) tidak boleh menjadi nombor.
aksara ASCII
Aksara ASCII yang boleh digunakan sebagai pengecam (nama) ialah huruf besar dan huruf kecil (A~Z,a~z), nombor (0~9), dan garis bawah (_). Abjad adalah peka huruf besar-besaran.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Simbol selain garis bawah tidak boleh digunakan.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Juga, nombor tidak boleh digunakan pada permulaan (huruf pertama).
# 1_abc = 100
# SyntaxError: invalid token
Garis bawah juga boleh digunakan pada permulaan.
_abc = 100
print(_abc)
# 100
Walau bagaimanapun, ambil perhatian bahawa garis bawah pada permulaan mungkin mempunyai makna yang istimewa.
aksara Unikod
Sejak Python 3, aksara Unicode juga boleh digunakan.
変数1 = 100
print(変数1)
# 100
Tidak semua aksara Unicode boleh digunakan, dan bergantung pada kategori Unicode, sesetengahnya tidak boleh digunakan. Contohnya, simbol seperti tanda baca dan piktogram tidak boleh digunakan.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Lihat dokumentasi rasmi untuk kod kategori Unicode yang boleh digunakan.
Dalam kebanyakan kes, tiada kelebihan menggunakan aksara Cina, dsb., semata-mata kerana aksara Unicode juga boleh digunakan (tanpa ralat).
normalisasi (cth. dalam matematik)
Aksara Unicode ditukar kepada bentuk NFKC yang dinormalkan untuk tafsiran. Sebagai contoh, abjad lebar penuh ditukar kepada abjad separuh lebar (aksara ASCII).
Ambil perhatian bahawa walaupun kod sumber menunjukkan paparan yang berbeza, ia dianggap sebagai objek yang sama dan akan ditimpa.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Semak sama ada rentetan itu ialah pengecam yang sah: identifier()
Sama ada rentetan sah atau tidak sebagai pengecam boleh disemak dengan kaedah rentetan identifier().
Ia mengembalikan benar jika ia sah sebagai pengecam, dan palsu jika ia tidak sah.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Perkataan yang tidak boleh digunakan sebagai pengecam (nama) (perkataan simpanan)
Terdapat beberapa perkataan (perkataan simpanan) yang tidak boleh digunakan sebagai pengecam walaupun ia adalah rentetan yang sah sebagai pengecam (nama).
Memandangkan perkataan yang dikhaskan ialah rentetan yang sah sebagai pengecam, identifier() mengembalikan benar, tetapi ralat berlaku jika ia digunakan sebagai pengecam.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Untuk mendapatkan senarai perkataan yang dikhaskan dan untuk menyemak sama ada rentetan ialah perkataan yang dikhaskan, gunakan modul kata kunci pustaka standard.
Perkataan yang tidak boleh digunakan sebagai pengecam (nama)
Nama-nama fungsi terbina dalam Python, sebagai contoh, boleh digunakan sebagai pengecam, jadi anda boleh menetapkan nilai baharu kepada mereka sebagai pembolehubah.
Contohnya, len() ialah fungsi terbina dalam yang mengembalikan bilangan elemen dalam senarai atau bilangan aksara dalam rentetan.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Jika anda menetapkan nilai baharu pada nama len ini, fungsi asal akan ditimpa dan menjadi tidak boleh digunakan. Ambil perhatian bahawa tiada ralat atau amaran akan dicetak apabila memberikan nilai baharu.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Satu lagi kesilapan biasa ialah menggunakan list = [0, 1, 2], yang menjadikannya mustahil untuk menggunakan list(). Berhati-hati.
Konvensyen penamaan untuk PEP8
PEP adalah singkatan kepada Python Enhancement Proposal, dokumen yang menerangkan ciri baharu dan aspek lain 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 ialah yang kelapan, dan ia menerangkan “Panduan Gaya untuk Kod Python”, iaitu, panduan gaya untuk Python.
Konvensyen penamaan juga disebut.
Lihat pautan di atas untuk butiran lanjut, tetapi sebagai contoh, gaya penulisan berikut disyorkan.
- Modul
lowercase_underscore
- Huruf kecil + garis bawah
- Pakej
lowercase
- semua huruf kecil
- Kelas, Pengecualian
CapitalizedWords
(CamelCase
)- Gunakan huruf besar pada huruf pertama sesuatu perkataan, tanpa garis bawah
- Fungsi, pembolehubah, dan kaedah
lowercase_underscore
- Huruf kecil + garis bawah
- tetap
ALL_CAPS
- Huruf besar + garis bawah
Walau bagaimanapun, jika organisasi anda tidak mempunyai konvensyen penamaan sendiri, adalah disyorkan untuk mengikuti PEP8.