Nach einigem Lesen habe ich mich mit zwei verschiedenen Ansätzen herumgeschlagen, um eine Liste von Argumenten an eine Funktion zu übergeben. Ich lese einige Hinweise. Das ist, was ich bisher herausgefunden:Der beste Ansatz zum Übergeben und Behandeln von Argumenten zur Funktion
Actual Code:
Datei 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)
Datei: 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
Und jetzt habe ich:
Datei 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)
Datei: 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
Mit dem alten Konzept (Ist-Code) Ich glaube, dass es mehr „freundlich“ ist nur eine Funktion in einer Zeile zu nennen (wie Sie auf worker.py sehen). Aber mit dem neuen Ansatz denke ich, dass der Code umfangreicher wird, weil ich für jede Funktion dieselben Variablen definieren muss. Aber ist das die beste Praxis? Ich lerne immer noch Python auf einer langsamen Kurve, also, Entschuldigung für irgendwelche Fehler im Code.
Und eine wichtige Sache, die meisten Variablen werden aus einer Datenbank abgerufen, so dass sie nicht staktisch sind.
Im Allgemeinen, wenn Sie mit Funktionen mit, dass viele Argumente am Ende, müssen Sie über Ihr Design etwas mehr denken. Wäre das Übergeben eines Objekts besser als die vielen Argumente? –
@MartijnPieters Es ist möglich, mir ein Beispiel zu schicken? In der Zwischenzeit werde ich versuchen, es auch auf anderem zu finden. und Python-Dokumentation. –
Was bedeutet die Menge der Argumente? Kann das benannt werden? Wenn dies der Fall ist, machen Sie es zu einem namedtuple oder einer benutzerdefinierten Klasse, um diese Informationen zu speichern, dann müssen Sie ein Objekt anstelle von x separaten Argumenten übergeben. –