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

简介:

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


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

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

变量交换

  • Pythonic写法

  • 普通写法

循环遍历区间元素

在Python2中,有range和xrange2种写法,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中,没有iteritems,items等价于Python2的iteritems。

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

推导式

  • Pythonic写法 

  • 普通写法 



作者:呆兔兔

来源:51CTO

相关文章
|
16天前
|
存储 缓存 Java
写代码原来如此简单:两种常用代码范式
一次项目包含非常多的流程,有需求拆解,业务建模,项目管理,风险识别,代码模块设计等等,如果我们在每次项目中,都将精力大量放在这些过程的思考上面,那我们剩余的,放在业务上思考的精力和时间就会大大减少;这也是为什么我们要 总结经验/方法论/范式 的原因;这篇文章旨在建立代码模块设计上的思路,给出了两种非常常用的设计范式,减少未来在这一块的精力开销。
|
8月前
|
存储 Rust Go
Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?
Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?
75 0
|
5月前
|
Python
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
57 1
|
8月前
|
数据采集 自然语言处理 监控
分享53个杂七杂八的Python源代码总有一个是你想要的
分享53个杂七杂八的Python源代码总有一个是你想要的
108 1
|
Python
Python 如何让自己的代码更有逼格 pythonic
Python 如何让自己的代码更有逼格 pythonic
92 0
|
算法 Java Android开发
|
安全 Java 数据库连接
麻了,代码改成多线程,竟有9大问题 下
麻了,代码改成多线程,竟有9大问题 下
|
消息中间件 JavaScript 小程序
麻了,代码改成多线程,竟有9大问题 上
麻了,代码改成多线程,竟有9大问题 上
|
机器学习/深度学习 人工智能 Python
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
36672 0
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
|
IDE 算法 开发工具
面向 CV 编程:COPY 了别人文章中的代码,想让代码能像作者一样跑通,应该注意什么呢?怎样才能让代码愉快地跑起来呢
一千个读者,一千个哈姆雷特,写代码也是如此,不同人,理解不同,逻辑不同,同一道题,代码各有千秋,所以出现的问题也是千奇百怪;预期结果就一个,解法却千千万。正如列夫托尔斯泰的安娜卡列尼娜中所说:幸福的家庭千遍一律,不幸的家庭各有各的不幸,但是主要不离题万里,错误基本能在一个常见的范围。 有人写代码是为了生计,有的人写代码仅仅是自己的兴趣使然。应该大多人都是第一种情况,我也一样,到了大学才拥有自己的第一台电脑,那时候智能手机刚出现,再往前倒推几年,手机都是个稀罕物,没有条件所以跟兴趣不沾边,唯一沾点边的是以前我喜欢刷竞赛题,锻炼逻辑,对学习算法有点帮助,但是作用有限。甚至有些人对自己所选的专业一无
1014 2
面向 CV 编程:COPY 了别人文章中的代码,想让代码能像作者一样跑通,应该注意什么呢?怎样才能让代码愉快地跑起来呢

热门文章

最新文章