我正在尝试遵守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(我应该在哪里将它分成新行?)
我正在尝试遵守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(我应该在哪里将它分成新行?)
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
这将使代码更具可读性
首先避免编写这种过于复杂的代码:
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()
为什么要生成一个默认值以再次解析为时间元组,而不是直接去那里?
将其拆分为不同的变量:
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")