我是 python 新手,我正在探索 python 我在 1 个文件中有许多不同的函数想要将这些函数公开给客户端。 这是我的 app.py 文件
import sys
def get_data(e_id, t_id):
#some code
def get_2_data(e_id, t_id)
#some code
def get_3_data(t_id)
#some code
if __name__ == '__main__':
get_data(sys.argv[1], sys.argv[2])
这里我想获取具体的函数数据。目前我正在运行 python app.py 1234 1. 在 main 下定义的函数被调用。 但我想要 get_3_data() 数据。如何调用特定函数或某人想要获取 get_2_data()。如何公开这些功能。任何建议。我不想要任何 HTTP 调用或 API。我想按方法名调用。
答案 0 :(得分:1)
干净的方法是使用模块 argparse
。
这里是如何做到这一点:
import argparse
def get_data(args):
e_id = args.e_id
t_id = args.t_id
print(f'Function get_data. e_id: {e_id}. t_id: {t_id}')
def get_data_2(args):
e_id = args.e_id
t_id = args.t_id
print(f'Function get_data_2. e_id: {e_id}. t_id: {t_id}')
def get_data_3(args):
t_id = args.t_id
print(f'Function get_data_3. t_id: {t_id}')
if __name__ == '__main__':
# Create the arguments parser
argparser = argparse.ArgumentParser()
# Create the subparsers
subparsers = argparser.add_subparsers()
# Add a parser for the first function
get_data_parser = subparsers.add_parser('get_data')
# Set the function name
get_data_parser.set_defaults(func=get_data)
# Add its arguments
get_data_parser.add_argument('e_id')
get_data_parser.add_argument('t_id')
# Add a parser for the second function
get_data_2_parser = subparsers.add_parser('get_data_2')
# Set the function name
get_data_2_parser.set_defaults(func=get_data_2)
# Add its arguments
get_data_2_parser.add_argument('e_id')
get_data_2_parser.add_argument('t_id')
# Add a parser for the third function
get_data_3_parser = subparsers.add_parser('get_data_3')
# Set the function name
get_data_3_parser.set_defaults(func=get_data_3)
# Add its arguments
get_data_3_parser.add_argument('t_id')
# Get the arguments from the comand line
args = argparser.parse_args()
# Call the selected function
args.func(args)
如本例所示,您必须稍微更改函数:
args
的参数(在主函数中使用 args = argparser.parse_args()
创建)add_argument
的参数,就像在 get_data_3_parser.add_argument('t_id')
中一样。因此,要获取名为 t_id
的参数,你会写t_id = args.t_id
。argparse
文档:https://docs.python.org/3/library/argparse.html
argparse
教程:https://docs.python.org/3/howto/argparse.html
来自文档:
<块引用>许多程序将它们的功能拆分为多个 子命令,例如svn程序可以调用子命令 比如 svn checkout、svn update 和 svn commit。分手 当程序 执行几种不同的功能,需要不同种类的 命令行参数。 ArgumentParser 支持创建这样的 使用 add_subparsers() 方法的子命令。