Cuba gunakan pembolehubah tempatan dan bukannya pembolehubah global: untuk memudahkan penyelenggaraan, meningkatkan prestasi dan menjimatkan memori.
Gantikan pembolehubah dalam ruang nama modul dengan pembolehubah tempatan, contohnya ls = os.linesep. Di satu pihak, ia boleh meningkatkan prestasi program dan menjadikan carian pembolehubah tempatan lebih cepat sebaliknya, pengecam pendek boleh digunakan untuk menggantikan pembolehubah modul yang panjang untuk meningkatkan kebolehbacaan.
Apabila menilai jenis objek, sebaiknya gunakan isinstance(), diikuti dengan identiti jenis objek (id()), dan nilai objek ( type()) Perbandingan adalah yang paling teruk.
#判断变量num是否为整数类型 type(num) == type(0) #调用三次函数 type(num) is type(0) #身份比较 isinstance(num,(int)) #调用一次函数
Jangan letakkan kandungan operasi berulang sebagai parameter dalam keadaan gelung untuk mengelakkan operasi berulang.
#每次循环都需要重新执行len(a) while i < len(a): statement #len(a)仅执行一次 m = len(a) while i < m: statement
Jika anda perlu menggunakan fungsi atau objek Y dalam modul X, anda harus terus menggunakan dari X import Y dan bukannya import X. Dengan cara ini, apabila menggunakan Y, satu pertanyaan boleh dikurangkan (jurubahasa tidak perlu mencari modul X dahulu dan kemudian mencari Y dalam kamus modul X).
Kelajuan carian pemetaan (seperti dict, dsb.) adalah lebih pantas daripada pernyataan bersyarat (seperti if, dsb.). Juga tiada pernyataan kes pilih dalam Python.
#if查找 if a == 1: b = 10 elif a == 2: b = 20 ... #dict查找,性能更优 d = {1:10,2:20,...} b = d[a]
Untuk jujukan (str, senarai, tuple, dsb.), mengulang terus unsur jujukan, yang lebih pantas daripada jujukan pengindeksan elemen berulang.
a = [1,2,3] #迭代元素 for item in a: print(item) #迭代索引 for i in range(len(a)): print(a[i])
Pemahaman senarai (pemahaman senarai) akan menjana keseluruhan senarai, dan lelaran sejumlah besar data. akan menghasilkan kesan negatif.
Ekspresi penjana tidak, ia sebenarnya tidak mencipta senarai, tetapi mengembalikan penjana yang menghasilkan nilai apabila diperlukan (pengiraan malas), yang lebih mesra memori.
#计算文件f的非空字符个数 #生成器表达式 l = sum([len(word) for line in f for word in line.split()]) #列表解析 l = sum(len(word) for line in f for word in line.split())
Apabila menggunakan fungsi eval() dan exec() untuk melaksanakan kod, sebaiknya panggil kod. fungsi object (pass compile( in advance) ) yang disusun menjadi bytecode), bukannya memanggil str terus, boleh mengelakkan proses kompilasi berulang beberapa kali dan meningkatkan prestasi program.
Padanan corak ungkapan biasa adalah serupa. Ia juga terbaik untuk menyusun corak ungkapan biasa ke dalam objek regex (melalui fungsi re.complie()) sebelum melakukan perbandingan dan pemadanan.
Pernyataan Python peringkat tertinggi (kod tanpa lekukan) dalam modul akan dilaksanakan apabila modul diimport (tidak kira sama ada ia benar-benar perlu untuk dilaksanakan) . Oleh itu, anda harus cuba meletakkan semua kod fungsi modul ke dalam fungsi, termasuk kod fungsi yang berkaitan dengan program utama, yang juga boleh diletakkan dalam fungsi main() dan program utama itu sendiri memanggil fungsi main() .
Anda boleh menulis kod ujian dalam fungsi utama() modul. Dalam program utama, semak nilai nama Jika ia adalah 'utama' (menunjukkan bahawa modul dilaksanakan secara langsung), panggil fungsi main() untuk ujian jika ia adalah nama modul (menunjukkan bahawa modul itu dipanggil), tiada ujian akan dilakukan.
Atas ialah kandungan terperinci Tujuh tabiat untuk meningkatkan prestasi program Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!