2013-07-24 21 views
0

我試圖堅持PEP 8,我的線條長度限制爲78個字符。如何根據PEP 8格式化這條線?

我有以下聲明:

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(?我應該在哪裏打破它進入新的生產線)

+0

交叉帖子[如何根據PEP 8格式化此行?](http://programmers.stackexchange.com/q/205917) –

+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 

這將使得代碼更易讀

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") 
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() 

爲什麼要生成一個默認解析出來的時間再次而不是隻是去直線嗎?