pythonic 代码_15个Pythonic的代码示例(值得收藏)
Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。
要写出 Pythonic(优雅的、地道的、整洁的)代码,还要平时多观察那些大牛代码,Github 上有很多非常优秀的源代码值得阅读,比如:requests、flask、tornado,这里小明收集了一些常见的 Pythonic 写法,帮助你养成写优秀代码的习惯。
01. 变量交换
Bad
tmp = a
a = b
b = tmp
Pythonic
a,b = b,a
02. 列表推导
Bad
my_list = []
for i in range(10):
my_list.append(i*2)
Pythonic
my_list = [i*2 for i in range(10)]
03. 单行表达式
虽然列表推导式由于其简洁性及表达性,被广受推崇。
但是有许多可以写成单行的表达式,并不是好的做法。
Bad
print 'one'; print 'two'
if x == 1: print 'one'
if and :
# do something
Pythonic
print 'one'
print 'two'
if x == 1:
print 'one'
cond1 =
cond2 =
if cond1 and cond2:
# do something
04. 带索引遍历
Bad
for i in range(len(my_list)):
print(i, "-->", my_list[i])
Pythonic
for i,item in enumerate(my_list):
print(i, "-->",item)
05. 序列解包
Pythonic
a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]
a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4
06. 字符串拼接
Bad
letters = ['s', 'p', 'a', 'm']
s=""
for let in letters:
s += let
Pythonic
letters = ['s', 'p', 'a', 'm']
word = ''.join(letters)
07. 真假判断
Bad
if attr == True:
print 'True!'
if attr == None:
print 'attr is None!'
Pythonic
if attr:
print 'attr is truthy!'
if not attr:
print 'attr is falsey!'
if attr is None:
print 'attr is None!'
08. 访问字典元素
Bad
d = {'hello': 'world'}
if d.has_key('hello'):
print d['hello'] # prints 'world'
else:
print 'default_value'
Pythonic
d = {'hello': 'world'}
print d.get('hello', 'default_value') # prints 'world'
print d.get('thingy', 'default_value') # prints 'default_value'
# Or:
if 'hello' in d:
print d['hello']
09. 操作列表
Bad
a = [3, 4, 5]
b = []
for i in a:
if i > 4:
b.append(i)
Pythonic
a = [3, 4, 5]
b = [i for i in a if i > 4]
# Or:
b = filter(lambda x: x > 4, a)
Bad
a = [3, 4, 5]
for i in range(len(a)):
a[i] += 3
Pythonic
a = [3, 4, 5]
a = [i + 3 for i in a]
# Or:
a = map(lambda i: i + 3, a)
10. 文件读取
Bad
f = open('file.txt')
a = f.read()
print a
f.close()
Pythonic
with open('file.txt') as f:
for line in f:
print line
11. 代码续行
Bad
my_very_big_string = """For a long time I used to go to bed early. Sometimes, \
when I had put out my candle, my eyes would close so quickly that I had not even \
time to say “I'm going to sleep.”"""
from some.deep.module.inside.a.module import a_nice_function, another_nice_function, \
yet_another_nice_function
Pythonic
my_very_big_string = (
"For a long time I used to go to bed early. Sometimes, "
"when I had put out my candle, my eyes would close so quickly "
"that I had not even time to say “I'm going to sleep.”"
)
from some.deep.module.inside.a.module import (
a_nice_function, another_nice_function, yet_another_nice_function)
12. 显式代码
Bad
def make_complex(*args):
x, y = args
return dict(**locals())
Pythonic
def make_complex(x, y):
return {'x': x, 'y': y}
13. 使用占位符
Pythonic
filename = 'foobar.txt'
basename, _, ext = filename.rpartition('.')
14. 链式比较
Bad
if age > 18 and age < 60:
print("young man")
Pythonic
if 18 < age < 60:
print("young man")
理解了链式比较操作,那么你应该知道为什么下面这行代码输出的结果是 False
>>> False == False == True
False
15. 三目运算
这个保留意见。随使用习惯就好。
Bad
if a > 2:
b = 2
else:
b = 1
#b = 2
Pythonic
a = 3
b = 2 if a > 2 else 1
#b = 2
到此这篇关于15个Pythonic的代码示例(值得收藏)的文章就介绍到这了,更多相关Pythonic代码内容请搜索站圈网以前的文章或继续浏览下面的相关文章希望大家以后多多支持站圈网!
pythonic 代码_15个Pythonic的代码示例(值得收藏)相关推荐
- python基础代码技巧_5行Python代码实现批量打水印技巧,值得收藏|python基础教程|python入门|python教程...
在线工具需要上传到对方服务器,信息不安全. 很多工具不具备批量处理功能. 很多工具自定义的功能太少,如水印透明度,字体等. 操作繁琐. 现在只要你会使用命令,我们就能教大家怎么使用 Python 超级 ...
- python水印倾斜_5行Python代码实现批量打水印技巧,值得收藏
在线工具需要上传到对方服务器,信息不安全. 很多工具不具备批量处理功能. 很多工具自定义的功能太少,如水印透明度,字体等. 操作繁琐. 这里还要注意:光理论是不够的.这里顺便总大家一套2020最新py ...
- 代码整洁之道 python_代码整洁之道-编写 Pythonic 代码
原标题:代码整洁之道-编写 Pythonic 代码 来自:Python学习开发(微信号:python3-5) 很多新手在开始学一门新的语言的时候,往往会忽视一些不应该忽视的细节,比如变量命名和函数命名 ...
- 微软一站式示例代码库 7月新代码示例发布
微软一站式示例代码库 7月新代码示例发布. 下载地址: http://1code.codeplex.com/releases/view/69942 你也可以通过 示例代码浏览器 或 示例代码浏览器Vi ...
- 微软一站式示例代码库 8 月新代码示例发布
微软一站式示例代码库 8 月新代码示例发布. 下载地址: http://1code.codeplex.com/releases/view/71395 你也可以通过 示例代码浏览器 或 示例代码浏览器V ...
- java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...
这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...
- python动态爱心代码_python 动态绘制爱心的示例
python 动态绘制爱心的示例 代码 import turtle turtle.bgcolor("black") turtle.pensize(2) sizeh = 1.2 de ...
- python代码阅读器_用Python代码实现的RSS阅读器示例
玩蛇网python之家这篇文章是关于如何使用Python代码实现RSS阅读器示例,如何用Tkinter等模块方法实现RSS订阅器的编写,参考学习过下面的正试代码后就会明白. 简单的说下RSS阅读器是什 ...
- java中普通代码块,构造代码块,静态代码块的区别及代码示例
本文转自:http://www.cnblogs.com/sophine/p/3531282.html 执行顺序:(优先级从高到低)静态代码块>main方法>构造代码块>构造方法. 其 ...
最新文章
- 跨平台PHP调试器设计及使用方法——使用
- 实验三 JSP应用开发进阶
- 最新技术前沿与产业风向标来了,百度研究院发布2021年十大趋势
- 多选题spss相关分析_SPSS进行典型相关分析结果总结
- 计算机技术是双证,计算机技术在职研究生单证可以转双证吗
- |洛谷|DFS|P1101 单词方阵
- Android面试题总结加强再加强版(三)
- 泰国小哥又双叒叕整活,奇怪的美少女出现了......
- 云漫圈 | 革命版互联网公司虐恋大戏,周一拿去怼业务!
- leetcode题解118-杨辉三角
- 先留住人,再发展人和吸引人
- 递推DP URAL 1260 Nudnik Photographer
- Anaconda下载官网
- 击穿线程池面试题:3大方法,7大参数,4种拒绝策略
- 分享塑胶模具设计思路与流程,建议收藏!
- SAP中在FS00中显示组科目表(集团科目表)
- Java中文乱码破碎重组_Java 关于中文乱码问题的解决方案与经验
- opIndex多级索引笔记
- 基于Matlab的故障检测的核PCA轮廓图
- 痴情人肠断 无情最逍遥