Python 代碼整潔優化
阿新 • • 發佈:2018-08-25
col ddr size Education name func 整潔 rand 分開
1.提煉函數
# 提煉之前 def user_info(): users = db.session.query(User).all() for user in users: print(user.name) print(user.gender) # 提煉之後 def user_info(): users = db.session.query(User).all() for user in users: print_user(user) def print_user(user): print(user.name) print(user.gender)
2.避免不必要的if..else..
# 優化前 def compare(x): if x > 8: return True else: return False # 優化後 def compare(x): return x > 8
3.不要對參數賦值
# 優化前 def amount(price,number) if number > 40: price = 25 # 優化後 def amount(price,number) new_price= price if number > 40: new_price = 25
4.替換邏輯
# 優化前 def func(x): if x == "sqlserver": return 1 if x == "oracle": return 2 if x == "pgsql": retuen 3 ... # 優化後 map_x = {"sqlserver":1,"oracle":2, "pgsql":3} def func(x): return map_x[x]
5.提煉類
# 優化前 class Employee(object): def __init__(self, name,gender,addresss, **kwargs): self.name = name ... def get_employee_education(): return self.education def get_employee_company_info(): company = Company() print company.name print company.address # 優化後 class Employee(object): def __init__(self, name,gender,addresss, **kwargs): self.name = name self.company = Company() ... def get_employee_education(): return self.education def get_employee_company_info(): return self.company.info()
6.以對象代替數組或者字典
# 優化前 user = list() user.append("name") user.append("age") user.append("gender") # 優化後 user = User() user.name="" user.age = ""
7.以常量代替魔法數據
# 優化前 def mianji(r): return 3.14 * r * r # 優化後 PAI = 3.14 def mianji(r): return PAI * r * r
8.合並重復的條件片段
# 優化前 if True: amount = price * 0.95 send(amount) else False: amount = price * 0.85 send(amount) # 優化後 if True: amount = price * 0.95 else False: amount = price * 0.85 send(amount)
9.獲取數據庫表字段,按需要獲取
db.session.query(User).all()
db.session .query(User.name).all()
db.session.query(User).value(User.name)
10.移除不必要的參數
# 如果一些參數在函數體始終用不到,就需要移除
11.將查詢函數和修改函數分開
#如將getUserAndAddLog() 替換成 getUser() addLog() #函數職責要分明
Python 代碼整潔優化