zoukankan      html  css  js  c++  java
  • Python【15个代码示例】

     

     

    Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。

    要写出 Pythonic(优雅的、地道的、整洁的)代码,还要平时多观察那些大牛代码,Github 上有很多非常优秀的源代码值得阅读,比如:requests、flask、tornado,这里收集了一些常见的 Pythonic 写法,帮助你养成写优秀代码的习惯。

    Python

    变量交换

    • Bad
    tmp = a
    a = b
    b = tmp
    • Pythonic
    a,b = b,a

    列表推导

    • Bad
    my_list = []
    for i in range(10):
    my_list.append(i*2)
    • Pythonic
    my_list = [i*2 for i in range(10)]

    单行表达式

    • 虽然列表推导式由于其简洁性及表达性,被广受推崇。
    • 但是有许多可以写成单行的表达式,并不是好的做法。
    • Bad
    复制代码
    print 'one'; print 'two'
    
    if x == 1: print 'one'
    
    if <complex comparison> and <other complex comparison>:
    # do something
    复制代码
    • Pythonic
    复制代码
    print 'one'
    print 'two'
    
    if x == 1:
    print 'one'
    
    cond1 = <complex comparison>
    cond2 = <other complex comparison>
    if cond1 and cond2:
    # do something 
    复制代码

    带索引遍历

    • Bad
    for i in range(len(my_list)):
    print(i, "-->", my_list[i])
    • Pythonic
    for i,item in enumerate(my_list):
    print(i, "-->",item)

    序列解包

    • 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
    1
    复制代码

    字符串拼接

    • Bad
    letters = ['s', 'p', 'a', 'm']
    s=""
    for let in letters:
    s += let
    • Pythonic
    letters = ['s', 'p', 'a', 'm']
    word = ''.join(letters)

    真假判断

    • 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!'
    复制代码

    访问字典元素

    • 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']
    复制代码

    操作列表

    • 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)

    文件读取

    • 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

    代码续行

    • 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)
    复制代码

    显式代码

    • Bad
    def make_complex(*args):
    x, y = args
    return dict(**locals())
    • Pythonic
    def make_complex(x, y):
    return {'x': x, 'y': y}

    使用占位符

    • Pythonic
    filename = 'foobar.txt'
    basename, _, ext = filename.rpartition('.')

    链式比较

    • Bad
    if age > 18 and age < 60:
    print("young man")
    • Pythonic
    if 18 < age < 60:
    print("young man")
    • 理解了链式比较操作,那么你应该知道为什么下面这行代码输出的结果是 False
    >>> False == False == True 
    False

    三目运算

    这个保留意见。随使用习惯就好。

    • Bad
    if a > 2:
    b = 2
    else:
    b = 1
    #b = 2
    • Pythonic
    a = 3
    
    b = 2 if a > 2 else 1
    #b = 2
  • 相关阅读:
    GIT基本概念和用法总结
    SELECT联动
    PHP无级分类续及搜索功能,分组分页
    PHP管理员登陆、验证与添加(前端验证)
    PHP手写cms 缓存Cache
    将本地文件上传到Ftp上的一些操作【转】
    SQL对时间的处理
    SQL Server游标的使用【转】
    修改数据表字段长度
    Web.Config加密【转】
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/15483816.html
Copyright © 2011-2022 走看看