【发布时间】:2018-07-04 02:55:48
【问题描述】:
我正在尝试将一些参数传递给解析器的默认函数,这些参数并非直接来自命令行中的参数。用户在 cli 上提供的参数旨在查找所需的实际值,因为它的实际值不是用户友好地重复输入的。
使用 argparse,您可以执行以下操作:
parser = argparse.ArgumentParser()
def test_function(args):
print args
Parser.set_defaults(func=test_function)
args = parser.parse_args()
args.func(args)
test_function 将在此处成功打印出 args。注意如何
(func=test_function)
没有传入任何参数,似乎只是传入了args,这里加括号会阻止传入args,因为如果你这样做它不会自动推送,并且输入它不会像args一样起作用' 就 Python 而言尚未定义。
我也试过了
Parser.set_defaults(func=test_function, realValue=lookup_function)
然而 realValue 似乎在对函数本身的引用进行评估,而不是函数返回的内容(我认为该函数甚至没有被执行,所以我不确定这是否会将 args 传递给 lookup_function) .
我可以可能从 test_function 调用查找函数,但是我想避免这种情况,因为在我的程序中这两个函数位于单独的模块中,而且看起来有点......导入混乱它们相互连接,而不是简单地将它们都导入到我的 main.py 文件中。
有没有人知道有什么方法可以做我想做的事情?我需要把它吸起来并导入跨子模块吗?
编辑 为了尝试更清楚一点,我想通过 argparse 的功能将 args 和另一个动态值传递给 test_function;
Parser.set_defaults(func=test_function)
动态值是通过使用 args 的值之一找到的。我想知道一种将另一个函数返回的新值传递给 test_function 或 args 本身的方法。
【问题讨论】:
-
你能说得更清楚一点吗?还有更多代码?
-
我不确定你想做什么......但无论如何这似乎都不是正确的做法......
-
@TylerCowan 你不明白哪一部分?我是刚来这里提问的新手,而且我没有和其他人一起做很多编程,所以我不确定还能提供什么。
标签: python python-2.7 argparse