1. 程式人生 > >Python 代碼整潔優化

Python 代碼整潔優化

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 代碼整潔優化