社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

写的代码又被喷?8招让你的代码更Pythonic

马哥Linux运维 • 7 年前 • 754 次点击  

Python是一门非常灵活的语言,很多语法是其他语言不具备的,特别是对于从C、Java等语言转向Python的人来说,很容易按照C、Java等语言的写法来写Python,对于初学者来说,如果对Python语言的理解不够透彻,就会写出很冗余的代码来。

这篇文章,主要介绍几个简单技巧,让你在写Python代码,更Pythonic

变量交换


  • Pythonic写法


  • 普通写法

循环遍历区间元素


在Python2中,有rangexrange2种写法,xrange是生成器写法,更节省内存。Python3中的range等价于Python2中的xrange

生成器,只有在使用时才会动态生成,而且只能使用1次,比如range(1000000),Python2中会在内存中生成1百万个元素的列表,而在Python3不会生成列表,而是生成器,占用很小的内存。

如何你还在使用Python2,建议用xrange代替range

  • Java的写法

  • 生成器扩展

索引


  • Pythonic写法

  • 普通写法

显然,Pythonic写法更加直观,优雅。


字符串拼接


  • Pythonic写法

  • 普通写法

每次+操作都会产生新字符串,造成内存浪费,而join,整个过程中只会产生一个字符串对象


文件打开与关闭


  • Pythonic写法

  • 普通写法

使用with,Python将自动管理文件流的打开与关闭,无需手动操作


列表操作


  • Pythonic写法

  • 普通写法

list也可以用pop(0)来删除第一个元素,但是list在内存中是顺序存储的,删除第一个元素,会导致之后的所有元素都会前移,效率很低,插入类似。

开头如果有大量的删除和插入操作,避免使用list


解构赋值


  • Pythonic写法

字典也类似,在Python2中,字典的items方法将返回列表,当字典比较大时,这样会很耗内存。而iteritems方法返回的是生成器。

Python3中,没有iteritemsitems等价于Python2的iteritems

如果在使用Python2,请用iteritems代替items


推导式


  • Pythonic写法

  • 普通写法

更多有关生成器与推导式的写法,见循环与推导式

作者:呆兔兔

来源:http://imtuzi.com/post/python3-pythonic-tips.html



————广告时间————

马哥教育2017年Python自动化运维开发实战班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才

扫描二维码和更多小伙伴组团学习


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/vOh5Uo1Rnb
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3335
 
754 次点击