result = 'function (%s)' % ', '.join(map(str,args))
recomiendo el mapa (str, args) en lugar de sólo args porque algunos de sus argumentos potencialmente no podían ser cadenas y causaría un TypeError, por ejemplo, con un argumento int en su lista:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
Cuando entra en objetos dict probablemente desee separar por comas los valores del dict (presumiblemente porque los valores son los que desea pasar a esta función). Si el método de combinación en el propio objeto dict, recibirá las llaves separadas, así:
>>> d = {'d':5, 'f':6.0, 'r':"BOB"}
>>> ','.join(d)
'r,d,f'
Lo que se quiere es la siguiente:
>>> d = {'d':5, 'f':6.0, 'r':"BOB"}
>>> result = 'function (%s)' % ', '.join(map(str, d.values()))
>>> result
'function (BOB, 5, 6.0)'
Nota el nuevo problema se encuentra con, sin embargo. Cuando pasa un argumento de cadena a través de la función de unión, pierde su cita. Entonces, si planea pasar cadenas, ha perdido las comillas que generalmente rodearían a la cadena cuando pasen a una función (las cadenas se citan en muchos lenguajes de propósito general). Sin embargo, si solo está pasando números, esto no es un problema para usted.
Probablemente haya una manera más agradable de resolver el problema que acabo de describir, pero este es un método que podría funcionar para usted.
>>> l = list()
>>> for val in d.values():
... try:
... v = float(val) #half-decent way of checking if something is an int, float, boolean
... l.append(val) #if it was, then append the original type to the list
... except:
... #wasn't a number, assume it's a string and surround with quotes
... l.append("\"" + val + "\"")
...
>>> result = 'function (%s)' % ', '.join(map(str, l))
>>> result
'function ("BOB", 5, 6.0)'
Ahora la cadena tiene comillas que la rodean. Si está pasando tipos más complejos que primitivas numéricas y cadenas, probablemente necesite una nueva pregunta :)
Una última nota: He estado usando d.values () para mostrar cómo extraer los valores de un diccionario, pero de hecho, eso devolverá los valores del diccionario en un orden bastante arbitrario. Como es muy probable que su función requiera los argumentos en un orden particular, debe construir manualmente su lista de valores en lugar de llamar a d.values ().
esto resulta en 'function (a, bcd)', si no me equivoco – hop