0

我正在尝试遵守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(我应该在哪里将它分成新行?)

4

3 回答 3

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

这将使代码更具可读性

于 2013-07-24T10:29:29.777 回答
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()

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

于 2013-07-24T10:31:43.237 回答
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")
于 2013-07-24T10:30:05.777 回答