Tujuh tabiat untuk meningkatkan prestasi program Python

WBOY
Lepaskan: 2023-04-16 18:01:03
ke hadapan
649 orang telah melayarinya

Tujuh tabiat untuk meningkatkan prestasi program Python

1. Gunakan pembolehubah tempatan

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.

2 Kurangkan bilangan panggilan fungsi

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)) #调用一次函数
Salin selepas log masuk

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
Salin selepas log masuk

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).

3. Gunakan pemetaan untuk menggantikan carian keadaan

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]
Salin selepas log masuk

4 Mengulang unsur jujukan secara langsung

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])
Salin selepas log masuk

5 Gunakan ungkapan penjana untuk menggantikan pemahaman senarai

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())
Salin selepas log masuk

6 Susun dahulu dan kemudian panggil

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.

7. Tabiat pengaturcaraan modul

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!