# -*- 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()