加入收藏 | 设为首页 | 会员中心 | 我要投稿 鞍山站长网 (https://www.0412zz.com/)- 应用安全、运维、云计算、5G、云通信!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

收藏,Python开发中有哪些高级技巧?

发布时间:2019-03-02 18:51:14 所属栏目:优化 来源:刘志军
导读:Python 开发中有哪些高级技巧?这是知乎上一个问题,我总结了一些常见的技巧在这里,可能谈不上多高级,但掌握这些至少可以让你的代码看起来 Pythonic 一点。如果你还在按照类C语言的那套风格来写的话,在 code review 恐怕会要被吐槽了。 列表推导式 chars
副标题[/!--empirenews.page--]

收藏,Python开发中有哪些高级技巧?

Python 开发中有哪些高级技巧?这是知乎上一个问题,我总结了一些常见的技巧在这里,可能谈不上多高级,但掌握这些至少可以让你的代码看起来 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] 

PACKING / UNPACKING

变量交换

  1. >>> a,b = 1, 2 
  2. >>> a ,b = b,a 
  3. >>> a 
  4. >>> b 

高级拆包

  1. >>> a, *b = 1,2,3 
  2. >>> a 
  3. >>> b 
  4. [2, 3] 

或者

  1. >>> a, *b, c = 1,2,3,4,5 
  2. >>> a 
  3. >>> b 
  4. [2, 3, 4] 
  5. >>> c 

函数返回多个值(其实是自动packing成元组)然后unpacking赋值给4个变量

  1. >>> def f(): 
  2. ...     return 1, 2, 3, 4 
  3. ... 
  4. >>> a, b, c, d = f() 
  5. >>> a 
  6. >>> d 

列表合并成字符串

  1. >>> " ".join(["I", "Love", "Python"]) 
  2. 'I Love Python' 

链式比较

  1. >>> if a > 2 and a < 5: 
  2. ...     pass 
  3. ... 
  4. >>> if 2<a<5: 
  5. ...     pass 

yield from

  1. # 没有使用 field from 
  2. def dup(n): 
  3.     for i in range(n): 
  4.         yield i 
  5.         yield i 
  6.  
  7. # 使用yield from 
  8. def dup(n): 
  9.     for i in range(n): 
  10.     yield from [i, i] 
  11.  
  12. for i in dup(3): 
  13.     print(i) 
  14.  
  15. >>> 

(编辑:鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读