Программа базы данных банка

Я пытался улучшить свое кодирование 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 ответ
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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *