argparse变量我有4个模块:访问外部模块
entry_point.py
utils.py
runner.py
client.py
我用utils.py
,我希望能够检索其中一个arg的值client.py
。
切入点模块(即会从控制台那叫一个):
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
模块:def parse_arguments(): parser = argparse.ArgumentParser() parser.add_argument( # Several arguments, one of which should be 'url' ) return parser.parse_args()
runner.py
模块:import client def run(arguments): user = User.new(arguments.user_id) client.get_user_info(user)
client.py
模块: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)
我并不想通过url
作为参数传递给client.get_user_info()
,因为我不认为这是件好事,它作为该函数的参数。
所以我想能够直接检索我从utils.parse_arguments()
获得的argparse参数。有没有办法做到这一点?
你可以做的参数的模块('entry_point'或'utils')宽的变量(设置为'None'直到参数解析),并在'_compose_url'中导入。但这可能有点模糊。或者,在'get_user_info'周围创建一个包含'url'参数的一次性包装函数。或者重新思考你的函数,因为'get_user_info' * *确实需要一个'base_url'。 – Evert