如何根据PEP 8格式化此行?

时间:2013-07-24 10:28:00

标签: python coding-style pep8

我正在尝试遵守PEP 8,我的行长度限制为78个字符。

我有以下声明:

startTime = time.strptime(request.GET.get('st', (dt.datetime.now() - dt.timedelta(days=1)).strftime("%d/%b/%Y:%H:%M:%S")), "%d/%b/%Y:%H:%M:%S")

我应该如何格式化它以使其符合PEP8(我应该把它分成新行?)

3 个答案:

答案 0 :(得分:1)

startTime = time.strptime(
    request.GET.get(
        'st', 
        (
            dt.datetime.now() - dt.timedelta(days=1)
        ).strftime("%d/%b/%Y:%H:%M:%S")
    ),
    "%d/%b/%Y:%H:%M:%S"
)

这是一个解决方案,但您为此使用了更多变量。例如:

time_format = "%d/%b/%Y:%H:%M:%S"
yesterday_date = dt.datetime.now() - dt.timedelta(days=1

这会使代码更具可读性

答案 1 :(得分:1)

首先避免编写这样过于复杂的代码:

if 'st' in request.GET:
    startTime = time.strptime(request.GET['st'], "%d/%b/%Y:%H:%M:%S")
else:
    startTime = (dt.datetime.now() - dt.timedelta(days=1)).timetuple()

为什么生成一个默认值再次被解析为一个时间元组而不是直接去那里?

答案 2 :(得分:0)

将其拆分为不同的变量:

a_date = (dt.datetime.now() - dt.timedelta(days=1)).strftime("%d/%b/%Y:%H:%M:%S")
req = request.GET.get('st', a_date)
startTime = time.strptime(req, "%d/%b/%Y:%H:%M:%S")