如何写出更 pythonic 的 Python 代码

  • 交换两个变量的值
a, b = b, a


  • (在合适的时候)使用推导式

列表推导式

l = [x*x for x in range(10) if x % 3 == 0]
#l = [0, 9, 36, 81]

还有字典和集合的推导式


  • (在合适的时候)使用生成器

生成器是可迭代对象,但在每次调用时才产生一个结果,而不是一次产生整个结果。

squares = (x * x for x in range(10))


  • 读取文件
with open('filename') as f:
    data = file.read()

with 相比于一般的 open、close 有异常处理,并能保证关闭文件。相比于 try…finally 代码更简洁。


  • 链式比较
0 < a < 10


  • 真值判断
name = 'v1coder'
if name:

# 而不是
if name != '':

即,对于任意对象,直接判断其真假,无需写判断条件

真假值表

如何写出更 pythonic 的 Python 代码_第1张图片


  • 字符串反转
def reverse_str( s ):
    return s[::-1] 


  • 字符串列表的连接
str_list = ["Python", "is", "good"]  
 
res =  ' '.join(str_list) #Python is good


  • for…else…语句
for x in xrange(1,5):
    if x == 5:
        print 'find 5'
        break
else:
    print 'can not find 5!'

如果循环全部遍历完成,没有执行 break,则执行 else 子句


  • 列表求和,最大值,最小值
numList = [1,2,3,4,5]   
 
sum = sum(numList)
maxNum = max(numList)
minNum = min(numList)


  • 遍历列表同时输出索引和元素
choices = ['pizza', 'pasta', 'salad', 'nachos']

for index, item in enumerate(choices):
  print(index, item)

# 输出:
0 pizza
1 pasta
2 salad
3 nachos


  • 遍历字典同时输出键和值
dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
 
print "字典值 : %s" %  dict.items()
 
for key,values in  dict.items():
    print key,values

# 输出:
字典值 : [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('Runoob', 'www.runoob.com')]
Google www.google.com
taobao www.taobao.com
Runoob www.runoob.com


  • 根据键名获取字典中对应的值
dict = {'Name': 'Zara', 'Age': 27}

print(dict.get('Age'))
print(dict.get('Sex', "Never"))

# 输出:
27
Never

用 get 方法,不存在时会得到 None,或者指定的默认值。



pythonic 可以理解为Python 式的优雅,简洁、明了,可读性高。


PEP 8 -- Style Guide for Python Code
Python语言规范 - Google
Pythonic 是什么意思?

你可能感兴趣的:(如何写出更 pythonic 的 Python 代码)