python-从外部模块访问argparse变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-从外部模块访问argparse变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1753字,纯文字阅读大概需要3分钟。
内容图文
我有4个模块:
> entry_point.py
> utils.py
> Runner.py
> client.py
我在utils.py中使用argparse,并且希望能够检索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参数.有没有办法做到这一点?
解决方法:
就像我的建议和MikeMüller的回答一样,以下代码设置了模块级变量.
但是,为了防止在导入时解析参数,仅在调用parse_arguments后才设置变量.由于在此之前将变量设置为None,所以我也只在需要时导入变量.
这样,parse_arguments仅在调用时运行,而不在导入模块时运行.在您的特定情况下可能不需要它,但是在例如软件包中使用了诸如utils之类的模块.
utils.py:
CONSOLE_ARGUMENTS = None
def parse_arguments():
parser = argparse.ArgumentParser()
parser.add_argument(
# Several arguments, one of which should be 'url'
)
parser.parse_args()
global CONSOLE_ARGUMENTS
CONSOLE_ARGUMENTS = parser.parse_args()
return CONSOLE_ARGUMENTS
client.py:
def _compose_url(method):
from .utils import CONSOLE_ARGUMENTS
base_url = CONSOLE_ARGUMENTS.base_url
return base_url + str(method)
内容总结
以上是互联网集市为您收集整理的python-从外部模块访问argparse变量全部内容,希望文章能够帮你解决python-从外部模块访问argparse变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。