<div dir="ltr">Il giorno 25 giugno 2013 19:13, Pietro Zambelli ha scritto:<div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
ma non puoi cambiare il codice in modo da avere invece che il nome della<br>
funzione, la funzione stessa?<br></blockquote><div><br></div><div>Da quello che ho capito io, lui già lo fa con gli «<font face="courier new, monospace">if..elif..</font>». Sta cercando un modo più automatico di passare dagli argomenti avuti da linea di comando (che sono stringhe) ad oggetti funzione da chiamare.</div>
<div><br></div><div>Qualche tempo in un'altra mail fa qualcuno aveva menzionato una qualche libreria che ti permette di mappare direttamente le funzioni sugli argomenti della CLI. Speravo di aver salvato il link tra i bookmark ma non è così. Ti permetterebbe di fare una cosa del tipo (molto molto a grandi linee):</div>
<div><br></div><div><div><span style="font-family:'courier new',monospace"> import sys</span></div></div><div><div><span style="font-family:'courier new',monospace"> import nonmiricordo</span></div>
</div>
<div><span style="font-family:'courier new',monospace"><br></span></div><div><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">qualcosa = nonmiricordo.Qualcosa()</span></div>
<div><span style="font-family:'courier new',monospace"><br></span></div><div><span style="font-family:'courier new',monospace"> </span><span style="font-family:'courier new',monospace">@qualcosa.unqualchedecoratore</span></div>
<div><span style="font-family:'courier new',monospace"> def command(arg):</span><br></div><div><span style="font-family:'courier new',monospace"> print 'hello ' + arg</span></div><div><span style="font-family:'courier new',monospace"><br>
</span></div><div><span style="font-family:'courier new',monospace"> if __name__ == '__main__':</span></div><div><span style="font-family:'courier new',monospace"> qualcosa.esegui(</span><span style="font-family:'courier new',monospace">sys.argv[1:]</span><span style="font-family:'courier new',monospace">)</span><br>
</div><div><span style="font-family:'courier new',monospace"><br></span></div><div><div><font face="courier new, monospace"> $ program.py command --arg=foo</font></div></div><div><font face="courier new, monospace"> hello foo</font></div>
<div><font face="courier new, monospace"><br></font></div><div>Insomma, la non meglio definita libreria riempie il buco fra argomenti come stringa e codice associato.</div><div>Che bello essere così dettagliati! Magari qualche anima pia interviene a precisare!<br>
</div><div><br></div><div>Ciao,</div><div>Nadir</div></div>
</div></div>