-1

私はこのコードを持っています

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)

しかし、質問があります。このコードを、他のプログラマーにとって読みやすく、フレンドリーに書くための最良の方法は何ですか?

このように 1 行で広範囲にわたるコードを書くための提案はありますか?

この提案は読めますか?

def testing2(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
4

3 に答える 3

0

次のようなものを試すことができます:

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

括弧、括弧、および中括弧は、コード行を 80 文字未満に保つのに役立ちます (ここでは、オブジェクトのjoinメソッドはstringoperator よりも効率的です+)

あなたの投稿はコーディング スタイルに関するものであるため、PEP8をまだ知らない場合は言及しないことは困難です。

于 2016-01-22T20:59:42.963 に答える
0

個人的には、その 2 番目のブロックを使用して、1 日と呼びます。必要に応じて、それをグループに揃えたり、いじったりすることができます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:]))
于 2016-01-22T21:01:53.760 に答える
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:])
于 2016-01-22T20:57:37.137 に答える