Ketika menginisialisasi kamus dengan d = {}
inspektur kode Pycharm menghasilkan peringatan, mengatakan
Pembuatan kamus ini dapat ditulis ulang sebagai kamus literal.
Jika saya menulis ulang d = dict()
peringatan itu hilang. Karena {}
sudah merupakan kamus literal, saya cukup yakin pesannya salah. Selain itu, sepertinya baik d = {}
dan d = dict()
berlaku dan Pythonic.
Pertanyaan terkait ini sepertinya menyimpulkan bahwa pilihan itu hanya masalah gaya / preferensi: perbedaan antara "d = dict ()" dan "d = {}"
Mengapa Pycharm mengeluh d = {}
?
MEMPERBARUI:
Mac berhasil. Peringatan sebenarnya diterapkan ke beberapa baris, bukan hanya yang ditandai.
Pycharm tampaknya mencari urutan pernyataan berurutan di mana Anda menginisialisasi kamus dan kemudian menetapkan nilai dalam kamus. Misalnya, ini akan memicu peringatan:
d = {}
d['a'] = 1
Tetapi kode ini tidak akan:
d = {}
pass
d['a'] = 1
something
atribut langsung ke dalam literal diktat alih-alih menugaskannya di baris berikutnya.Jawaban:
Apa kode berikut untuk deklarasi kamus Anda?
Saya pikir pycharm akan memicu kesalahan jika Anda memiliki sesuatu seperti:
seperti yang bisa Anda tulis
BTW: Fakta bahwa kesalahan hilang jika Anda menggunakan fungsi tidak berarti pycharm percaya
dict()
itu literal. Itu bisa berarti bahwa itu tidak mengeluh untuk:HTH!
sumber
dic = dict()
solusi ...d = { 'aaa': f1(something) }
itu,d = f2(d)
lalu,d = f3(d)
dll ... Atau sebagai alternatifd['bbb'] = f2(d)
,d['ccc'] = f3(d)
...?d = {}
,d['a'] = A
,d['b'] = f(d['a'])
,d['c'] = f(d['b'])
, dlld = {'a': A}
dan kemudian hanya menjaga urutan seperti yang Anda uraikan?Ini dapat dinonaktifkan di Pengaturan Proyek atau Pengaturan Default.
sumber
bagi mereka yang suka (sama seperti saya) untuk menginisialisasi kamus dengan operasi tunggal
bukannya banyak baris suka
pada akhirnya saya berakhir dengan ini:
Pycharm tidak mengeluh tentang ini
sumber
Kamus bisa dibuat secara langsung tanpa menginisialisasi mereka terlebih dahulu dan kemudian menetapkan kembali nilai-nilai baru.
sumber
Saya memiliki situasi di mana peringatan ini mengganggu saya. Dalam kasus saya, saya mengisi dict saya sebagian sebagai literal dan sebagian dari output tuple oleh suatu fungsi, seperti:
Jadi, kecuali saya membuat vars sementara untuk output get_other_values, PEP8 menghasilkan peringatan ini walaupun saya membuat dict dengan literal. Dan saya tidak dapat menetapkan kunci c dan d dalam literal, karena nilainya adalah output sebagai tuple.
sumber