Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tujuh tabiat untuk meningkatkan prestasi program Python

Tujuh tabiat untuk meningkatkan prestasi program Python

WBOY
WBOYke hadapan
2023-04-16 18:01:03617semak imbas

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

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

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]

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

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

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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam