Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在命令行参数中选择函数_Python_Command Line Arguments - Fatal编程技术网

Python:在命令行参数中选择函数

Python:在命令行参数中选择函数,python,command-line-arguments,Python,Command Line Arguments,在Python程序(具有多个用户定义函数)中,我希望通过命令行参数指定要使用的函数。例如,我的Python程序中有以下函数,func1(),func2(),func3(),我目前正在使用以下技术: python prog.py -func func2" 我的程序是这样的: from __future__ import division import numpy as np import argparse parser = argparse.ArgumentParser(description

在Python程序(具有多个用户定义函数)中,我希望通过命令行参数指定要使用的函数。例如,我的Python程序中有以下函数,func1()func2()func3(),我目前正在使用以下技术:

python prog.py -func func2"
我的程序是这样的:

from __future__ import division
import numpy as np
import argparse

parser = argparse.ArgumentParser(description='')
parser.add_argument('-func', help='')
args = parser.parse_args()
func_type = globals()[args.func]()

def func1(): 
    print "something1"
def func2(): 
    print "something2"
def func3(): 
    print "something3"

func_type()
我得到以下错误:

KeyError: 'func2'

如果有人能告诉我如何实现所需的功能,我将不胜感激。

func\u type=globals()[args.func]()

  • 您正在查找的函数尚未定义。将函数定义移到此行上方

  • 您正在调用函数,而不是在变量
    func\u type
    中保存对该函数的引用


  • 两个简单的错误与
    func_type=globals()[args.func]()

  • 您正在查找的函数尚未定义。将函数定义移到此行上方

  • 您正在调用函数,而不是在变量
    func\u type
    中保存对该函数的引用


  • 而且,正如您在前面的编辑中所说,在全局中查找函数之前,需要先定义这些函数。因此,除了删除括号外,@SiddTheKid还应该将所有三个函数声明移到参数解析块上方谢谢@galenlong。而且,正如您在前面的编辑中所说的,在globals中查找函数之前,需要先定义函数。因此,除了删除括号外,@SiddTheKid还应该将所有三个函数声明移到参数解析块上方谢谢@galenlong。