Python 如何创建可重用代码?

Python 如何创建可重用代码?,python,sqlalchemy,reusability,Python,Sqlalchemy,Reusability,我有许多类似下面代码的实例。如何将它们抽象出来并使其可重用 #json_generator() is a function that yields paginated json #Foo and Bar are sqlalchemy models def fetch_foo_data(): URL = BASE_URL + ','.join(Foo.__table__.columns.keys()) return json_generator(URL) def fetch_b

我有许多类似下面代码的实例。如何将它们抽象出来并使其可重用

#json_generator() is a function that yields paginated json
#Foo and Bar are sqlalchemy models

def fetch_foo_data():
    URL = BASE_URL + ','.join(Foo.__table__.columns.keys())
    return json_generator(URL)

def fetch_bar_data():
    #Bar model has id as primary key that doesn't exist in the JSON data
    #so I am excluding it
    URL = BASE_URL + ','.join(Bar.__table__.columns.keys()[1:])
    return json_generator(URL)

def bulk_load_foo_data():
    for json in fetch_foo_data():
        foos = map(lambda foo: Foo(**foo), json)
        try:
            session.bulk_save_objects(foos)
            session.commit()
        except Exception as e:
            print e
            session.rollback()

def bulk_load_bar_data():
    for json in fetch_bar_data():
        bars = map(lambda bar: Bar(**bar), json)
        try:
            session.bulk_save_objects(bars)
            session.commit()
        except Exception as e:
            print e
            session.rollback()

将对象传递给函数:

def fetch_object_data(obj, min=0, max=-1):
    URL = BASE_URL + ','.join(obj.__table__.columns.keys()[min:max])
    return json_generator(URL)
def bulk_load_object_data(obj):
    for json in fetch_foo_data():
        foos = map(lambda foo: obj(**foo), json)
        try:
            session.bulk_save_objects(foos)
            session.commit()
        except Exception as e:
            print e
            session.rollback()
对于第二个功能:

def fetch_object_data(obj, min=0, max=-1):
    URL = BASE_URL + ','.join(obj.__table__.columns.keys()[min:max])
    return json_generator(URL)
def bulk_load_object_data(obj):
    for json in fetch_foo_data():
        foos = map(lambda foo: obj(**foo), json)
        try:
            session.bulk_save_objects(foos)
            session.commit()
        except Exception as e:
            print e
            session.rollback()

我不知道代码到底在做什么…

有人能解释一下他为什么投反对票吗?我不在乎我的代表,但我真的不明白我做错了什么<代码>:(