標籤:資料 add __init__ info ber span UNC 條件 bsp
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.14def 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.95else False: amount = price * 0.85send(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 代碼整潔最佳化