need hint for refactoring

G

GHUM

I have a bunch of function like:

def p2neufrage(_):
""" create new element"""
anfrage,ergebnis=getanfrage()
if ergebnis.get("status","ok") == "ok":
wert=anfrage["feld"]
# do something
# unique here


ergebnis["innerHTML"]=..... something ....

#
return simplejson.dumps(ergebnis, skipkeys=False,
ensure_ascii=False, check_circular=True, allow_nan=True)


so, everywhere there is the same beginning:

anfrage,ergebnis=getanfrage()

I analyze some transmitted jason-document; check for errors

then I take the values out of the request, process it and fill the
slots of a result ("ergebnis") dictionary, which is returned.


So the beginning and the end of the function is allways repeated. It
would be great to factor it out ... i startet with that ...getanfrage()
call.

Is there anything more possible?

Thanks for any hint

Harald
 
D

Diez B. Roggisch

GHUM said:
I have a bunch of function like:

def p2neufrage(_):
""" create new element"""
anfrage,ergebnis=getanfrage()
if ergebnis.get("status","ok") == "ok":
wert=anfrage["feld"]
# do something
# unique here


ergebnis["innerHTML"]=..... something ....

#
return simplejson.dumps(ergebnis, skipkeys=False,
ensure_ascii=False, check_circular=True, allow_nan=True)


so, everywhere there is the same beginning:

anfrage,ergebnis=getanfrage()

I analyze some transmitted jason-document; check for errors

then I take the values out of the request, process it and fill the
slots of a result ("ergebnis") dictionary, which is returned.


So the beginning and the end of the function is allways repeated. It
would be great to factor it out ... i startet with that ...getanfrage()
call.

Is there anything more possible?

Use a decorator, out of my head:

def foo(f):
def _w(*args, **kwargs):
anfrage,ergebnis=getanfrage()
new_args = (args[0],) + (anfrage, ergebnis) + args[1:]
f(*new_args, **kwargs)
return simplejson.dumps(ergebnis, skipkeys=False,
ensure_ascii=False, check_circular=True, allow_nan=True)

return _w

Then do

@foo
def p2neufrage(_, anfrage, ergebnis):
""" create new element"""
if ergebnis.get("status","ok") == "ok":
wert=anfrage["feld"]
# do something
# unique here
ergebnis["innerHTML"]=..... something ....


Diez
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top