前言:
代码太多,小编就以图片方式展现出来,方便大家观看以及收藏!
ython 开发中有哪些高级技巧?这是知乎上一个问题,我总结了一些常见的技巧在这里,可能谈不上多高级,但掌握这些至少可以让你的代码看起来 Pythonic 一点。如果你还在按照类C语言的那套风格来写的话,在 code review 恐怕会要被吐槽了。
列表推导式
1.>>> chars = [ c for c in 'python' ] 2.>>> chars 3.['p', 'y', 't', 'h', 'o', 'n']
字典推导式
1.>>> dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} 2.>>> double_dict1 = {k:v*2 for (k,v) in dict1.items()} 3.>>> double_dict1 4.{'a': 2, 'b': 4, 'c': 6, 'd': 8, 'e': 10}
集合推导式
1.>>> set1 = {1,2,3,4} 2.>>> double_set = {i*2 for i in set1} 3.>>> double_set 4.{8, 2, 4, 6}
合并字典
1.>>> x = {'a':1,'b':2} 2.>>> y = {'c':3, 'd':4} 3.>>> z = {**x, **y} 4.>>> z 5.{'a': 1, 'b': 2, 'c': 3, 'd': 4}
复制列表
1.>>> nums = [1,2,3] 2.>>> nums[::] 3.[1, 2, 3] 4.>>> copy_nums = nums[::] 5.>>> copy_nums 6.[1, 2, 3]
反转列表
1.>>> reverse_nums = nums[::-1] 2.>>> reverse_nums 3.[3, 2, 1] 4.PACKING / UNPACKING
变量交换
1.>>> a,b = 1, 2 2.>>> a ,b = b,a 3.>>> a 4.2 5.>>> b 6.1
高级拆包
1.>>> a, *b = 1,2,3 2.>>> a 3.1 4.>>> b 5.[2, 3]
或者
1.>>> a, *b, c = 1,2,3,4,5 2.>>> a 3.1 4.>>> b 5.[2, 3, 4] 6.>>> c 7.5
函数返回多个值(其实是自动packing成元组)然后unpacking赋值给4个变量
1.>>> def f(): 2.... return 1, 2, 3, 4 3.... 4.>>> a, b, c, d = f() 5.>>> a 6.1 7.>>> d 8.4
列表合并成字符串
1.>>> " ".join(["I", "Love", "Python"]) 2.'I Love Python'
链式比较
in 代替 or
1.>>> if x == 1 or x == 2 or x == 3: 2 ... pass 3 ... 4 >>> if x in (1,2,3): 5 ... pass
字典代替多个if else
有下标索引的枚举
>>> for i, e in enumerate(["a","b","c"]): ... print(i, e) ... 0 a 1 b 2 c
生成器
注意区分列表推导式,生成器效率更高
默认字典 defaultdict
>>> d = dict() >>> d['nums'] KeyError: 'nums' >>> >>> from collections import defaultdict >>> d = defaultdict(list) >>> d["nums"] []
字符串格式化
>>> lang = 'python' >>> f'{lang} is most popular language in the world' 'python is most popular language in the world'
列表中出现次数最多的元素
>>> nums = [1,2,3,3] >>> max(set(nums), key=nums.count) 3
或者
from collections import Counter >>> Counter(nums).most_common()[0][0] 3
读写文件
>>> with open("test.txt", "w") as f: ... f.writelines("hello")
判断对象类型,可指定多个类型
>>> isinstance(a, (int, str)) True
类似的还有字符串的 startswith,endswith
前者对人友好,可读性更强,后者对计算机友好,支持 obj == eval(repr(obj))
使用装饰器
如果不使用装饰器,可读性非常差
def say(): return "Hello" >>> makebold(makeitalic(say))() <b><i>Hello</i></b>
以上就是全部内容啦!
最后,小编想说一句话:我是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习,面试真题,面试真题,面试真题等。想要这些资料的可以关注小编,并在后台私信小编:“07”即可领取