Rumah pembangunan bahagian belakang Tutorial Python Python开发的10个注意事项

Python开发的10个注意事项

Apr 29, 2017 pm 05:05 PM

  下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。

  注意:假设我们都用的是Python 3

 1. 列表推导式

  你有一个list:bag = [1, 2, 3, 4, 5]

  现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, 8, 10]

  大多初学者,根据之前语言的经验会大概这样来做

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    bag[i] = bag[i] * 2
Salin selepas log masuk

  但是有更好的方法:

bag = [elem * 2 for elem in bag]
Salin selepas log masuk

  很简洁对不对?这叫做Python的列表推导式。

  点击Trey Hunner’s tutorial查看更多关于列表推导式的介绍。

 2. 遍历列表

  继续,还是上面的列表。

  如果可能尽量避免这样做:

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    print(bag[i])
Salin selepas log masuk

  取而代之的应该是这样:

bag = [1, 2, 3, 4, 5]  
for i in bag:  
    print(i)
Salin selepas log masuk

  如果x是一个列表,你可以对它的元素进行迭代。多数情况下你不需要各元素的索引,但如果你非要这样做,那就用enumerate函数。它像下边的样子:

bag = [1, 2, 3, 4, 5]  
for index, element in enumerate(bag):  
    print(index, element)
Salin selepas log masuk

  非常直观明了。

 3. 元素互换

  如果你是从java或者C语言转到Python来,可能会习惯于这样:

a = 5  
b = 10

# 交换 a 和 b
tmp = a  
a = b  
b = tmp
Salin selepas log masuk

  但Python提供了一个更自然更好的方法!

a = 5  
b = 10  
# 交换a 和 b
a, b = b, a
Salin selepas log masuk

  够漂亮吧?

 4. 初始化列表

  假如你要一个是10个整数0的列表,你可能首先想到:

bag = []  
for _ in range(10):  
    bag.append(0)
Salin selepas log masuk

  换个方式吧:

bag = [0] * 10
Salin selepas log masuk

  看,多优雅。

  注意:如果你列表包含了列表,这样做会产生浅拷贝。

  举个例子:

bag_of_bags = [[0]] * 5 # [[0], [0], [0], [0], [0]]  
bag_of_bags[0][0] = 1 # [[1], [1], [1], [1], [1]]
Salin selepas log masuk

  Oops!所有的列表都改变了,而我们只是想要改变第一个列表。

  改一改啦:

bag_of_bags = [[0] for _ in range(5)]  
# [[0], [0], [0], [0], [0]]

bag_of_bags[0][0] = 1  
# [[1], [0], [0], [0], [0]]
Salin selepas log masuk

  同时记住:

“过早优化是万恶之源”
问问自己,初始化一个列表是必须的吗?

 5. 构造字符串

  你会经常需要打印字符串。要是有很多变量,避免下面这样:

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is " + name + "and I'm " + str(age) + " years old. I was born in " + born_in + "."  
print(string)
Salin selepas log masuk

  额,这看起来多乱呀?你可以用个漂亮简洁的方法来代替,.format。

  这样做:

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is {0} and I'm {1} years old. I was born in {2}.".format(name, age, born_in) 
print(string)
Salin selepas log masuk

  好多了!

 6. 返回tuples(元组)

  Python允许你在一个函数中返回多个元素,这让生活更简单。但是在解包元组的时候出出线这样的常见错误:

def binary():  
    return 0, 1

result = binary()  
zero = result[0]  
one = result[1]
Salin selepas log masuk

  这是没必要的,你完全可以换成这样:

def binary():  
    return 0, 1

zero, one = binary()
Salin selepas log masuk

  要是你需要所有的元素被返回,用个下划线_:

zero, _ = binary()
Salin selepas log masuk

  就是这么高效率!

 7. 访问Dicts(字典)

  你也会经常给dicts中写入key,pair(键,值)。

  如果你试图访问一个不存在的于dict的key,可能会为了避免KeyError错误,你会倾向于这样做:

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    if i in countr:
        countr[i] += 1
    else:
        countr[i] = 1

for i in range(10):  
    if i in countr:
        print("Count of {}: {}".format(i, countr[i]))
    else:
        print("Count of {}: {}".format(i, 0))
Salin selepas log masuk

  但是,用get()是个更好的办法。

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    countr[i] = countr.get(i, 0) + 1

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))
Salin selepas log masuk

  当然你也可以用setdefault来代替。

  这还用一个更简单却多费点开销的办法:

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
countr = dict([(num, bag.count(num)) for num in bag])

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))
Salin selepas log masuk

  你也可以用dict推导式。

countr = {num: bag.count(num) for num in bag}
Salin selepas log masuk

  这两种方法开销大是因为它们在每次count被调用时都会对列表遍历。

 8 使用库

  现有的库只需导入你就可以做你真正想做的了。

  还是说前面的例子,我们建一个函数来数一个数字在列表中出现的次数。那么,已经有一个库就可以做这样的事情。

from collections import Counter  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
countr = Counter(bag)

for i in range(10):  
    print("Count of {}: {}".format(i, countr[i]))
Salin selepas log masuk

  一些用库的理由:

  • 代码是正确而且经过测试的。


  • 它们的算法可能会是最优的,这样就跑的更快。


  • 抽象化:它们指向明确而且文档友好,你可以专注于那些还没有被实现的。


  • 最后,它都已经在那儿了,你不用再造轮子了。

 9. 在列表中切片/步进

  你可以指定start的点和stop点,就像这样list[start:stop:step]。我们取出列表中的前5个元素:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[:5]:  
    print(elem)
Salin selepas log masuk

  这就是切片,我们指定stop点是5,再停止前就会从列表中取出5个元素。

  要是最后5个元素怎么做?

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[-5:]:  
    print(elem)
Salin selepas log masuk

  没看明白吗?-5意味着从列表的结尾取出5个元素。

  如果你想对列表中元素间隔操作,你可能会这样做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for index, elem in enumerate(bag):  
    if index % 2 == 0:
        print(elem)
Salin selepas log masuk

  但是你应该这样来做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[::2]:  
    print(elem)

# 或者用 ranges
bag = list(range(0,10,2))  
print(bag)
Salin selepas log masuk

  这就是列表中的步进。list[::2]意思是遍历列表同时两步取出一个元素。

  你可以用list[::-1]很酷的翻转列表。

 10. tab键还是空格键

  长时间来看,将tab和空格混在一起会造成灾难,你会看到IndentationError: unexpected indent。不管你选择tab键还是空格键,你应该在你的文件和项目中一直保持使用。

  一个使用空格而不是tab的原因是,tab不是在所有编辑器中都一样的。视呢所用的编辑器,tab可能会被当作2到8个空格。

  你也可以在写代码时用空格来定义tab。这样你可以自己选择用几个空格来当做tab。大多数Python用户是用4个空格。

  英文原文:The Python Way: 10 Tips

Atas ialah kandungan terperinci Python开发的10个注意事项. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nota Pembangunan C++: Elakkan Pengecualian Penunjuk Null dalam Kod C++ Nota Pembangunan C++: Elakkan Pengecualian Penunjuk Null dalam Kod C++ Nov 22, 2023 pm 02:38 PM

Dalam pembangunan C++, pengecualian penuding nol ialah ralat biasa, yang sering berlaku apabila penunjuk tidak dimulakan atau terus digunakan selepas dikeluarkan. Pengecualian penuding nol bukan sahaja menyebabkan ranap program, tetapi juga boleh menyebabkan kelemahan keselamatan, jadi perhatian khusus diperlukan. Artikel ini akan menerangkan cara untuk mengelakkan pengecualian penuding nol dalam kod C++. Memulakan pembolehubah penunjuk Penunjuk dalam C++ mesti dimulakan sebelum digunakan. Jika tidak dimulakan, penunjuk akan menunjuk ke alamat memori rawak, yang mungkin menyebabkan Pengecualian Penunjuk Null. Untuk memulakan penuding, arahkannya ke an

Wuthering WavesPengenalan kepada perkara yang memerlukan perhatian semasa ujian Wuthering WavesPengenalan kepada perkara yang memerlukan perhatian semasa ujian Mar 13, 2024 pm 08:13 PM

Semasa ujian Mingchao, sila elakkan naik taraf sistem, tetapan semula kilang dan penggantian alat ganti untuk mengelakkan kehilangan maklumat dan log masuk permainan yang tidak normal. Peringatan khas: Tiada saluran rayuan semasa tempoh ujian, jadi sila kendalikannya dengan berhati-hati. Pengenalan kepada perkara yang memerlukan perhatian semasa ujian Mingchao: Jangan tingkatkan sistem, pulihkan tetapan kilang, ganti komponen peralatan, dsb. Nota: 1. Sila tingkatkan sistem dengan teliti semasa tempoh ujian untuk mengelakkan kehilangan maklumat. 2. Jika sistem dikemas kini, ia mungkin menyebabkan masalah tidak dapat log masuk ke permainan. 3. Pada peringkat ini, saluran rayuan masih belum dibuka Pemain dinasihatkan untuk memilih sama ada untuk menaik taraf mengikut budi bicara mereka sendiri. 4. Pada masa yang sama, satu akaun permainan hanya boleh digunakan dengan satu peranti Android dan satu PC. 5. Adalah disyorkan agar anda menunggu sehingga ujian selesai sebelum menaik taraf sistem telefon mudah alih atau memulihkan tetapan kilang atau menggantikan peranti.

Bagaimana untuk memulakan siaran langsung di Douyin buat kali pertama? Apakah yang perlu anda perhatikan semasa menyiarkan secara langsung buat kali pertama? Bagaimana untuk memulakan siaran langsung di Douyin buat kali pertama? Apakah yang perlu anda perhatikan semasa menyiarkan secara langsung buat kali pertama? Mar 22, 2024 pm 04:10 PM

Dengan kebangkitan platform video pendek, Douyin telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian ramai orang. Penyiaran langsung di Douyin dan berinteraksi dengan peminat adalah impian ramai pengguna. Jadi, bagaimanakah anda memulakan siaran langsung di Douyin buat kali pertama? 1. Bagaimana untuk memulakan siaran langsung di Douyin buat kali pertama? 1. Persediaan Untuk memulakan siaran langsung, anda perlu memastikan bahawa akaun Douyin anda telah melengkapkan pengesahan nama sebenar. Anda boleh menemui tutorial pengesahan nama sebenar dalam "Saya" -> "Tetapan" -> "Akaun dan Keselamatan" dalam APP Douyin. Selepas melengkapkan pengesahan nama sebenar, anda boleh memenuhi syarat siaran langsung dan memulakan siaran langsung pada platform Douyin. 2. Mohon kebenaran siaran langsung Selepas memenuhi syarat siaran langsung, anda perlu memohon kebenaran siaran langsung. Buka APP Douyin, klik "Saya" -> "Pusat Pencipta" -> "Terus

Langkah dan langkah berjaga-jaga untuk menggunakan storan setempat untuk menyimpan data Langkah dan langkah berjaga-jaga untuk menggunakan storan setempat untuk menyimpan data Jan 11, 2024 pm 04:51 PM

Langkah dan langkah berjaga-jaga untuk menggunakan localStorage untuk menyimpan data Artikel ini memperkenalkan terutamanya cara menggunakan localStorage untuk menyimpan data dan menyediakan contoh kod yang berkaitan. LocalStorage ialah cara menyimpan data dalam penyemak imbas yang menyimpan data setempat ke komputer pengguna tanpa melalui pelayan. Berikut ialah langkah dan perkara yang perlu diberi perhatian apabila menggunakan localStorage untuk menyimpan data. Langkah 1: Semak sama ada penyemak imbas menyokong LocalStorage

Langkah dan langkah berjaga-jaga untuk memasang pip tanpa rangkaian Langkah dan langkah berjaga-jaga untuk memasang pip tanpa rangkaian Jan 18, 2024 am 10:02 AM

Kaedah dan langkah berjaga-jaga untuk memasang pip dalam persekitaran luar talian Memasang pip menjadi cabaran dalam persekitaran luar talian di mana rangkaian tidak lancar. Dalam artikel ini, kami akan memperkenalkan beberapa kaedah memasang pip dalam persekitaran luar talian dan memberikan contoh kod khusus. Kaedah 1: Gunakan pakej pemasangan luar talian Dalam persekitaran yang boleh menyambung ke Internet, gunakan arahan berikut untuk memuat turun pakej pemasangan pip daripada sumber rasmi: pipdownloadpip Perintah ini akan memuat turun pip dan pakej bergantungnya secara automatik daripada sumber rasmi dan simpan dalam direktori semasa. Alihkan pakej termampat yang dimuat turun ke lokasi terpencil

Perkongsian pengalaman pembangunan Python: cara melaksanakan kawalan versi dan pengurusan keluaran Perkongsian pengalaman pembangunan Python: cara melaksanakan kawalan versi dan pengurusan keluaran Nov 23, 2023 am 08:36 AM

Perkongsian pengalaman pembangunan Python: Cara menjalankan kawalan versi dan pengurusan keluaran Pengenalan: Dalam proses pembangunan Python, kawalan versi dan pengurusan keluaran adalah pautan yang sangat penting. Melalui kawalan versi, kami boleh menjejaki perubahan kod dengan mudah, bekerjasama dalam pembangunan, menyelesaikan konflik, dsb. dan pengurusan keluaran boleh membantu kami mengatur proses penempatan, ujian dan pelepasan kod untuk memastikan kualiti dan kestabilan kod. Artikel ini akan berkongsi beberapa pengalaman dan amalan dalam pembangunan Python dari dua aspek: kawalan versi dan pengurusan keluaran. 1. Kawalan versi kawalan versi

Nota Pembangunan Python: Elakkan Masalah Kebocoran Memori Biasa Nota Pembangunan Python: Elakkan Masalah Kebocoran Memori Biasa Nov 22, 2023 pm 01:43 PM

Sebagai bahasa pengaturcaraan peringkat tinggi, Python mempunyai kelebihan kerana mudah dipelajari, mudah digunakan dan sangat cekap dalam pembangunan, dan menjadi semakin popular di kalangan pembangun. Walau bagaimanapun, disebabkan oleh cara mekanisme pengumpulan sampahnya dilaksanakan, Python terdedah kepada kebocoran memori apabila berurusan dengan jumlah memori yang besar. Artikel ini akan memperkenalkan perkara yang perlu anda perhatikan semasa pembangunan Python daripada tiga aspek: masalah kebocoran memori biasa, punca masalah dan kaedah untuk mengelakkan kebocoran memori. 1. Masalah kebocoran memori biasa: Kebocoran memori merujuk kepada ketidakupayaan untuk melepaskan ruang memori yang diperuntukkan oleh program semasa operasi.

Nasihat pembangunan Python: Kuasai dan gunakan prinsip pengaturcaraan berorientasikan objek Nasihat pembangunan Python: Kuasai dan gunakan prinsip pengaturcaraan berorientasikan objek Nov 22, 2023 pm 07:59 PM

Python ialah bahasa pengaturcaraan yang berkuasa dan fleksibel yang digunakan secara meluas dalam pembangunan perisian dalam pelbagai bidang. Dalam proses pembangunan Python, adalah sangat penting untuk menguasai dan menggunakan prinsip Pengaturcaraan Berorientasikan Objek (OOP). Artikel ini akan memperkenalkan beberapa cadangan pembangunan Python utama untuk membantu pembangun memahami dan menggunakan prinsip pengaturcaraan berorientasikan objek dengan lebih baik. Pertama sekali, idea teras pengaturcaraan berorientasikan objek adalah untuk membahagikan masalah kepada satu siri objek dan

See all articles