0

コードの行を縮小したいだけです。2 つの行だけが異なる 2 つのループがあります。毎回行を変更することは可能ですか (関数またはクラス)? 2 つのループは次のとおりです。

cursor = ''
while True:
    data =  API_like_query(id,cursor)
    #more code
    for i in data['data']:
        ids_likes += i['id']+' , '
    #more code

cursor = ''
while True:
    data =  API_com_query(id,cursor)
    #more code
    for i in data['data']:
        ids_likes += i['from']['id']+' , '
    #more code

より多くのコードは、使用されるコードの同じチャンクです。違いは関数呼び出し (3 行目) と 6 行目の辞書オブジェクトの違いです。

4

3 に答える 3

3

関数は非常に簡単に作成できます。

def do_stuff(api_func, get_data_func):
    cursor = ''
    while True:
        data = api_func(id, cursor)
        #more code
        for i in data['data']:
            ids_likes += get_data_func(i) + ', '
        #more code

次に、最初のループを次のように再現できます。

do_stuff(API_like_query, lambda i: i['id'])

そして2番目のもの:

do_stuff(API_come_query, lambda i: i['from']['id'])

関数は、コードをより小さく、テストしやすく、再利用可能な部分に分割するように作成されているため、この場合は適切と思われます。

于 2013-08-07T13:59:46.613 に答える
0

joinedquery=izip(API_like_query(id,cursor),API_com_query(id,cursor))クエリの長​​さが同じ場合。それからfor i1,i2 in joinedquery:

于 2013-08-07T13:56:57.110 に答える