Python mengenali berikut ini sebagai instruksi yang mendefinisikan penyandian file:
# -*- coding: utf-8 -*-
Saya pasti melihat instruksi semacam ini sebelumnya ( -*- var: value -*-
). Dari mana asalnya? Apa spesifikasi lengkapnya, mis. Bisakah nilainya mencakup spasi, simbol khusus, baris baru, bahkan -*-
sendiri?
Program saya akan menulis file teks biasa dan saya ingin memasukkan beberapa metadata di dalamnya menggunakan format ini.
# coding: utf-8
# coding: utf8
karya di luar kotak dengan Python 2.7, bahkan di luar PyCharm. (Saya menggunakan SublimeText).Jawaban:
Cara menentukan pengkodean file Python ini berasal dari PEP 0263 - Menentukan Penyandi Kode Sumber Python .
Itu juga dikenali oleh GNU Emacs (lihat Python Language Reference, 2.1.4 Pengkodean deklarasi ), meskipun saya tidak tahu apakah itu adalah program pertama yang menggunakan sintaks itu.
sumber
# -*- coding: utf-8 -*-
adalah hal Python 2. Dalam Python 3+, pengodean default file sumber sudah UTF-8 dan baris itu tidak berguna.Lihat: Haruskah saya menggunakan deklarasi penyandian dalam Python 3?
pyupgrade
adalah alat yang dapat Anda jalankan pada kode Anda untuk menghapus komentar-komentar itu dan sisa-sisa makanan lain yang tidak berguna dari Python 2, seperti mewarisi semua kelas Andaobject
.sumber
Ini disebut variabel file lokal, yang dipahami oleh Emacs dan disetel sesuai. Lihat bagian yang sesuai dalam manual Emacs - Anda dapat mendefinisikannya di header atau di footer file
sumber
Di PyCharm, saya akan meninggalkannya. Ini mematikan indikator UTF-8 di bagian bawah dengan peringatan bahwa pengkodean adalah hard-coded. Jangan berpikir Anda membutuhkan komentar PyCharm yang disebutkan di atas.
sumber
test1 = 'äöü'
itu akan mengisyaratkan Anda untuk menambahkan header seperti itu ke file. (pycharm 2019.1)