Я пытался улучшить свое кодирование Python, и мне просто интересно, есть ли более питонический способ выполнить то, что я сделал до сих пор, а именно около даты в main()
функция.
import datetime
import sybase
account_list = []
def get_date(): # Date -1 day unless Monday then -3 days
d = datetime.date.today()
if d.weekday() == 0:
date = d - datetime.timedelta(days=3)
return date
else:
date = d - datetime.timedelta(days=1)
return date
def get_unique_accounts(date):
conn = sybase.Connection('')
c = conn.cursor()
c.execute("SELECT DISTINCT acct from accounts WHERE date = @date", {"@date": date})
result = c.fetchall()
for row in result:
account_list.append(row[0])
c.close()
conn.close()
def check_balance(date):
conn = sybase.Connection('')
c = conn.cursor()
c.execute("SELECT TOP 1 name,balance from balance WHERE date = @date", {"@date": date})
result = c.fetchone()
c.close()
conn.close()
return result
def main():
date = get_date()
get_unique_accounts(date) # This will be used for future functions
check_balance(date)
if __name__ == "__main__":
main()
1 ответ
Я сосредоточусь на get_date()
метод. Во-первых, что это за свидание? В настоящее время название заставляет меня думать, что он получит текущую дату, но это что-то вроде банковской даты? Что-то вроде get_last_banking_day()
было бы более наглядно?
Вы можете переместить возврат в конец функции, поскольку он одинаков в обоих блоках if / else:
def get_last_banking_day(): # Date -1 day unless Monday then -3 days
d = datetime.date.today()
if d.weekday() == 0:
date = d - datetime.timedelta(days=3)
else:
date = d - datetime.timedelta(days=1)
return date
Вы можете очистить импорт и импортировать только 2 необходимые вещи из datetime
, date
и timedelta
.:
from datetime import date, timedelta
Функция будет выглядеть так:
def get_last_banking_day(): # Date -1 day unless Monday then -3 days
d = date.today()
if d.weekday() == 0:
date = d - timedelta(days=3)
else:
date = d - timedelta(days=1)
return date
Теперь мы можем посмотреть на имена переменных и немного почистить, особенно d
Переменная. Всегда старайтесь избегать неописательных имен:
def get_last_banking_day(): # Date -1 day unless Monday then -3 days
today = date.today()
if today.weekday() == 0:
last_banking_day = today - timedelta(days=3)
else:
last_banking_day = today - timedelta(days=1)
return date
Как today - timedelta(days=1)
по умолчанию, мы используем его как таковой и устанавливаем значение this и используем только оператор if для установки исключения:
def get_last_banking_day(): # Date -1 day unless Monday then -3 days
today = date.today()
last_banking_day = today - timedelta(days=1)
if today.weekday() == 0:
last_banking_day = today - timedelta(days=3)
return date