Effective Python 读书笔记: 4 用辅助函数来取代复杂的表达式

# -*- encoding: utf-8 -*-

import sys

'''

第4条: 用辅助函数来取代复杂的表达式

关键:
1 避免过渡使用python语法特性而写出特别复杂的单行表达式
2 复杂表达式用辅助函数表示

参考:
Effectiv Python 编写高质量Python代码的59个有效方法

'''

def oneLineVersion(myValues):
    red = myValues.get('red', [''])[0] or 0
    green = myValues.get('green', [''])[0] or 0
    opacity = myValues.get('opacity', [''])[0] or 0
    print "red: {red}".format(red=red)
    print "green: {green}".format(green=green)
    print "opacity: {opacity}".format(opacity=opacity)


def twoLineVersion(myValues):
    red = myValues.get('red', [''])
    red = int(red[0]) if red[0] else 0
    green = myValues.get('green', [''])
    green = int(green[0]) if green[0] else 0
    opacity = myValues.get('opacity', [''])
    opacity = int(opacity[0]) if opacity[0] else 0
    print "red: {red}".format(red=red)
    print "green: {green}".format(green=green)
    print "opacity: {opacity}".format(opacity=opacity)


def functionVersion(values, key, default=0):
    arr = values.get(key, [''])
    if arr[0]:
        result = int(arr[0])
    else:
        result = default
    return result

def process():
    myValues={
        'red': [5],
        'green': [''],
    }
    oneLineVersion(myValues)
    twoLineVersion(myValues)
    key = 'red'
    result = functionVersion(myValues, key, 0)
    print "{key} : {result}".format(key=key, result=result)


if __name__ == "__main__":
    process()

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/88583960
今日推荐