编写可理解且易于使用Python的代码的最佳方法

时间:2016-01-22 20:52:19

标签: python readability human-readable

我有这段代码

gnfChannelIn

但是我有一个代言人,什么是写这段代码的最好方法,对其他程序员来说可读性和友好性?

任何建议在这样的一行中写入代码?

这个建议是否可读?

def testing1(terms, request):
    dat = datetime.now(pytz.timezone(geo_timezone(request)))
    __start = terms['year']+'-'+terms['month']+'-'+terms['day']+'T'+'00:00:00'+dat.strftime('%z')[:-2]+':'+dat.strftime('%z')[-2:]
    __end = terms['year']+'-'+terms['month']+'-'+terms['day']+'T'+'23:59:59'+dat.strftime('%z')[:-2]+':'+dat.strftime('%z')[-2:]
    return __start, __end

testing({"month":12,"day":1, "year":"2015"}, request)

3 个答案:

答案 0 :(得分:0)

唯一难以阅读的是你在哪里构建字符串,所以我会使用.format()。这样,您可以看到生成的布局,然后查看所有相应的条目。

__start = '{}-{}-{}T00:00:00{}:{}'.format(terms['year'],
                                          terms['month'],
                                          terms['day'],
                                          dat.strftime('%z')[:-2],
                                          dat.strftime('%z')[-2:])

__end = '{}-{}-{}T23:59:59{}:{}'.format(terms['year'],
                                        terms['month'],
                                        terms['day'],
                                        dat.strftime('%z')[:-2],
                                        dat.strftime('%z')[-2:])

答案 1 :(得分:0)

您可以尝试以下内容:

__start = ''.join([terms['year'], '-',
                   terms['month'], '-',
                   terms['day'], 'T',
                   '00:00:00',
                   dat.strftime('%z')[:-2], ':',
                   dat.strftime('%z')[-2:]
                   ])

括号,括号和大括号将帮助您保留代码行< 80个字符 (此处join对象的string方法比运算符+更有效率)

由于你的帖子是关于编码风格的,如果你不知道它,很难不提及PEP8

答案 2 :(得分:0)

就个人而言,我会选择第二个街区并将其称为一天。如果您愿意,可以尝试将其对齐成组,或者弄乱str.format()

__start = terms['year'] + '-' + terms['month'] + '-' + terms['day'] + \
          'T00:00:00' + \
          dat.strftime('%z')[:-2] + ':' + dat.strftime('%z')[-2:]
__end =   terms['year'] + '-' + terms['month'] + '-' + terms['day'] + \
          'T23:59:59' + \
          dat.strftime('%z')[:-2] + ':' + dat.strftime('%z')[-2:]

__start = ('{}-{}-{}'.format(terms['year'], terms['month'], terms['day']) +
           'T00:00:00' +
           '{}:{}'.format(dat.strftime('%z')[:-2], dat.strftime('%z')[-2:]))
__end =   ('{}-{}-{}'.format(terms['year'], terms['month'], + terms['day']) +
           'T23:59:59' +
           '{}:{}'.format(dat.strftime('%z')[:-2], dat.strftime('%z')[-2:]))