Ich habe 4 Module:Zugang argparse Variablen von einem externen Modul
entry_point.py
utils.py
runner.py
client.py
Ich benutze argparse
in utils.py
und ich möchte in der Lage sein, um den Wert eines dieser arg abzurufen in client.py
.
Einsprungpunkt Modul (die, die von der Konsole aufgerufen wird):
import utils def main(): console_args = utils.parse_arguments() # Get command-line arguments runner.run(console_args) # The main function in the program if __name__ == '__main__': main()
utils.py
Modul:def parse_arguments(): parser = argparse.ArgumentParser() parser.add_argument( # Several arguments, one of which should be 'url' ) return parser.parse_args()
runner.py
Modul:import client def run(arguments): user = User.new(arguments.user_id) client.get_user_info(user)
client.py
Module:def get_user_info(user): url = _compose_url('user_status') resp = requests.post(url, data=user.id) def _compose_url(method): # TODO: get base_url from console arguments # base_url = ? return base_url + str(method)
Ich will nicht url
als Parameter an client.get_user_info()
passieren, weil ich es als Parameter für diese Funktion zu haben, wäre nicht denken gut.
Also ich möchte in der Lage sein, die Argarseargumente, die ich von utils.parse_arguments()
direkt erhalten habe, abrufen zu können. Gibt es eine Möglichkeit, das zu tun?
Sie könnten die Argumente ein Modul machen ('entry_point' oder' utils') breit Variable (auf 'None', bis die Argumente werden analysiert), und importieren Sie sie in '_compose_url'. Aber das mag sich etwas unklar anfühlen. Erstellen Sie alternativ eine einmalige Wrapper-Funktion mit einem 'url' -Parameter um' get_user_info'. Oder überdenke deine Funktion (en), da anscheinend 'get_user_info' * * eine' base_url' erfordert. – Evert