Después de leer un poco, me encontré luchando con dos enfoques diferentes para pasar una lista de argumentos a una función. Leí algunas indicaciones. Eso es lo que me di cuenta hasta ahora:Mejor enfoque para pasar y manejar argumentos para funcionar
código real:
archivo caller.py:
import worker
worker.version_check(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_get(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_send(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
del archivo: worker.py:
def version_check(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_get(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_send(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
Y ahora tengo:
file caller.py:
import worker
args = (env, family, host, password, prefix, proxyServer,
proxyUser, proxyPass, option, jokerVar
)
worker.version_check(*args)
worker.version_get(*args)
worker.version_send(*args)
del archivo: worker.py:
def version_check(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_get((*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_send(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
Utilizando el enfoque de edad (código real) Creo que es más "amigable" para llamar a una función en una sola línea (como se puede ver en worker.py) Pero, utilizando el nuevo enfoque, creo que el código se vuelve más extenso porque para cada función tengo que definir todas las mismas variables. ¿Pero esta es la mejor práctica? Todavía estoy aprendiendo Python en una curva lenta, así que, lo siento por cualquier error en el código.
Y una cosa importante, la mayoría de las variables se recuperan de una base de datos, por lo que no son estáticas.
En general, cuando se termina con las funciones que con muchos argumentos, es necesario pensar en su diseño un poco más. ¿Sería mejor pasar un objeto que muchos argumentos? –
@MartijnPieters ¿Es posible enviarme un ejemplo? Mientras tanto, trataré de encontrarlo también en el s.o. y documentación de Python. –
¿Qué representa el conjunto de argumentos? ¿Puede eso ser nombrado? Si es así, conviértalo en una clase personalizada o personalizada para que contenga esa información, luego tendrá que pasar un objeto en lugar de x argumentos separados. –