


20 petua penggunaan Python, disyorkan untuk dikumpulkan!
1. Operasi mengelirukan
Bahagian ini membandingkan beberapa operasi mengelirukan Python.
1.1 Persampelan rawak dengan penggantian dan pensampelan rawak tanpa penggantian
import random random.choices(seq, k=1) # 长度为k的list,有放回采样 random.sample(seq, k) # 长度为k的list,无放回采样
1.2 Parameter fungsi lambda
func = lambda y: x + y # x的值在函数运行时被绑定 func = lambda y, x=x: x + y # x的值在函数定义时被绑定
copy1
dan deepcopy import copy
y = copy.copy(x) # 只复制最顶层
y = copy.deepcopy(x) # 复制所有嵌套部分
a = [1, 2, [3, 4]] # Alias. b_alias = a assert b_alias == a and b_alias is a # Shallow copy. b_shallow_copy = a[:] assert b_shallow_copy == a and b_shallow_copy is not a and b_shallow_copy[2] is a[2] # Deep copy. import copy b_deep_copy = copy.deepcopy(a) assert b_deep_copy == a and b_deep_copy is not a and b_deep_copy[2] is not a[2]
2、常用工具
2.1 读写 CSV 文件
import csv # 无header的读写 with open(name, 'rt', encoding='utf-8', newline='') as f: # newline=''让Python不将换行统一处理 for row in csv.reader(f): print(row[0], row[1]) # CSV读到的数据都是str类型 with open(name, mode='wt') as f: f_csv = csv.writer(f) f_csv.writerow(['symbol', 'change']) # 有header的读写 with open(name, mode='rt', newline='') as f: for row in csv.DictReader(f): print(row['symbol'], row['change']) with open(name, mode='wt') as f: header = ['symbol', 'change'] f_csv = csv.DictWriter(f, header) f_csv.writeheader() f_csv.writerow({'symbol': xx, 'change': xx})
注意,当 CSV 文件过大时会报错:_csv.Error: field larger than field limit (131072),通过修改上限解决
import sys csv.field_size_limit(sys.maxsize)
csv 还可以读以 \t 分割的数据
f = csv.reader(f, delimiter='\t')
2.2 迭代器工具
itertools 中定义了很多迭代器工具,例如子序列工具:
import itertools itertools.islice(iterable, start=None, stop, step=None) # islice('ABCDEF', 2, None) -> C, D, E, F itertools.filterfalse(predicate, iterable) # 过滤掉predicate为False的元素 # filterfalse(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 6 itertools.takewhile(predicate, iterable) # 当predicate为False时停止迭代 # takewhile(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 1, 4 itertools.dropwhile(predicate, iterable) # 当predicate为False时开始迭代 # dropwhile(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 6, 4, 1 itertools.compress(iterable, selectors) # 根据selectors每个元素是True或False进行选择 # compress('ABCDEF', [1, 0, 1, 0, 1, 1]) -> A, C, E, F
序列排序:
sorted(iterable, key=None, reverse=False) itertools.groupby(iterable, key=None) # 按值分组,iterable需要先被排序 # groupby(sorted([1, 4, 6, 4, 1])) -> (1, iter1), (4, iter4), (6, iter6) itertools.permutations(iterable, r=None) # 排列,返回值是Tuple # permutations('ABCD', 2) -> AB, AC, AD, BA, BC, BD, CA, CB, CD, DA, DB, DC itertools.combinations(iterable, r=None) # 组合,返回值是Tuple itertools.combinations_with_replacement(...) # combinations('ABCD', 2) -> AB, AC, AD, BC, BD, CD
多个序列合并:
itertools.chain(*iterables) # 多个序列直接拼接 # chain('ABC', 'DEF') -> A, B, C, D, E, F import heapq heapq.merge(*iterables, key=None, reverse=False) # 多个序列按顺序拼接 # merge('ABF', 'CDE') -> A, B, C, D, E, F zip(*iterables) # 当最短的序列耗尽时停止,结果只能被消耗一次 itertools.zip_longest(*iterables, fillvalue=None) # 当最长的序列耗尽时停止,结果只能被消耗一次
2.3 计数器
计数器可以统计一个可迭代对象中每个元素出现的次数。
import collections # 创建 collections.Counter(iterable) # 频次 collections.Counter[key] # key出现频次 # 返回n个出现频次最高的元素和其对应出现频次,如果n为None,返回所有元素 collections.Counter.most_common(n=None) # 插入/更新 collections.Counter.update(iterable) counter1 + counter2; counter1 - counter2 # counter加减 # 检查两个字符串的组成元素是否相同 collections.Counter(list1) == collections.Counter(list2)
2.4 带默认值的 Dict
当访问不存在的 Key 时,defaultdict 会将其设置为某个默认值。
import collections collections.defaultdict(type) # 当第一次访问dict[key]时,会无参数调用type,给dict[key]提供一个初始值
2.5 有序 Dict
import collections collections.OrderedDict(items=None) # 迭代时保留原始插入顺序
3、高性能编程和调试
3.1 输出错误和警告信息
向标准错误输出信息
import sys sys.stderr.write('')
输出警告信息
import warnings warnings.warn(message, category=UserWarning) # category的取值有DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, FutureWarning
控制警告消息的输出
$ python -W all # 输出所有警告,等同于设置warnings.simplefilter('always') $ python -W ignore # 忽略所有警告,等同于设置warnings.simplefilter('ignore') $ python -W error # 将所有警告转换为异常,等同于设置warnings.simplefilter('error')
3.2 代码中测试
有时为了调试,我们想在代码中加一些代码,通常是一些 print 语句,可以写为:
# 在代码中的debug部分 if __debug__: pass
一旦调试结束,通过在命令行执行 -O 选项,会忽略这部分代码:
$ python -0 main.py
3.3 代码风格检查
使用 pylint 可以进行不少的代码风格和语法检查,能在运行之前发现一些错误
pylint main.py
3.4 代码耗时
耗时测试
$ python -m cProfile main.py
测试某代码块耗时
# 代码块耗时定义 from contextlib import contextmanager from time import perf_counter @contextmanager def timeblock(label): tic = perf_counter() try: yield finally: toc = perf_counter() print('%s : %s' % (label, toc - tic)) # 代码块耗时测试 with timeblock('counting'): pass
代码耗时优化的一些原则
Fokus pada pengoptimuman tempat kesesakan prestasi berlaku, bukan keseluruhan kod. Elakkan menggunakan pembolehubah global. Pembolehubah tempatan dicari lebih cepat daripada pembolehubah global, dan kod menjalankan yang mentakrifkan pembolehubah global dalam fungsi biasanya 15%-30% lebih pantas. Elakkan menggunakan . Ia akan menjadi lebih pantas untuk digunakan daripada nama import modul untuk meletakkan pembolehubah ahli kelas yang kerap diakses self.member ke dalam pembolehubah tempatan. Cuba gunakan struktur data terbina dalam. str, senarai, set, dict, dll. dilaksanakan dalam C dan berjalan dengan sangat pantas. Elakkan membuat pembolehubah perantaraan yang tidak perlu dan copy.deepcopy(). Penyambungan rentetan, seperti a + ':' + b + ':' + c akan mencipta banyak pembolehubah perantaraan yang tidak berguna, ':',join([a, b, c]) tidak akan cekap sedikit. Di samping itu, anda perlu mempertimbangkan sama ada penggabungan rentetan diperlukan Contohnya, print(':'.join([a, b, c])) adalah kurang cekap daripada print(a, b, c, sep=':'. ).
Atas ialah kandungan terperinci 20 petua penggunaan Python, disyorkan untuk dikumpulkan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.
