Pythonians:有没有更好的方法在Python中编写代码?

pir*_*hac 2 python datetime readability

我是高级PHP和Perl老兄,但Python对我来说是新手.我很开心学习它!我编写了下面的代码,但是我无法摆脱那些具有"高级"Python技能的人更好地编写的感觉.你真正的Python人是一个有趣的挑战吗?

请注意:我希望代码可读.Python被认为是可读的 - 我们不是在这里写人Perl!(例如:我喜欢'工作日'是字符串而不是整数,非常清楚)

import datetime
today = datetime.datetime.now()
weekday = today.strftime("%a")
hourmin = int(today.strftime("%H%M"))
print "today here is: " + today.strftime("%c") # for debug
if weekday == "Sat" or \
   (weekday == "Sun" and hourmin < 2000) or \
   (weekday == "Fri" and hourmin > 1630) or \
   (hourmin >= 1630 and hourmin < 2000) :
    print "bad time"
else:
    print "good time"
Run Code Online (Sandbox Code Playgroud)

San*_*nta 6

您可以将day字符串映射到占用hourmin的lambda,并确定它是否错误.例如:

# establish the "rules"    
bad_time = {
    'Sat': lambda h: True,    # always bad time!
    'Sun': lambda h: h < 2000,
    'Fri': lambda h: h > 1630,
}

# ... get your `weekday` and `hourmin` values

is_bad = bad_time.get(weekday, lambda h: (1630 <= h < 2000))(hourmin)
print 'bad time' if is_bad else 'good time'
Run Code Online (Sandbox Code Playgroud)

编辑:关注kindall的建议.

  • 实际上这比原版更令人困惑.在Perl中,这可能很可爱,但Python强调可读性而不是聪明. (3认同)