15个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

Pythonic

if 18

理解了链式比较操作,那么你应该知道为什么下面这行代码输出的结果是 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

参考文档

http://docs.python-guide.org/en/latest/writing/style/

https://foofish.net/idiomatic_part2.html

到此这篇关于15个Pythonic的代码示例(值得收藏)的文章就介绍到这了,更多相关Pythonic代码内容搜索编程之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程之家!

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...