我正在尝试在python中执行以下操作: 有一个带有命名参数的函数。
def functionA(self, input1, argument2='', argument3='',argument4='DefaultVal'):
## do something
我的输入字符串是通过命令行输入的,应该像这样
testcommand test1 argument2=test2 argument3=test3
这应该解决使用命名参数调用上述函数的问题。什么是最简单的方法
答案 0 :(得分:0)
这是一种有限的错误检查方式,但是我绝对建议您检查argparse
:
JBOSS_OPTS="-bmanagement=192.168.15.5"
参数处理非常简单,可以为位置参数建立一个列表,为关键字参数建立一个字典,然后将它们解压缩到import sys
# To simulate arguments
sys.argv = ['<script>', 'foo', 'test1', 'arg2=test2', 'arg3=test3']
# An example of a function that you want to call
def foo(input1, arg2='', arg3='', arg4='default'):
print("foo called:")
print(input1, arg2, arg3, arg4)
# Add callable functions to a dict
CALLABLES = {'foo': foo}
def call_callable(argv):
args = [] # A list for positional arguments
kwargs = {} # A dict for keyword arguments
func = CALLABLES[argv[0]] # Get callable by name (may raise KeyError)
# Parse remaining arguments into either args or kwargs
for arg in argv[1:]:
if '=' in arg:
kwargs.update((arg.split('='),))
else:
args.append(arg)
# Call function, return it's result to the script (if it matters)
return func(*args, **kwargs)
# Slice argv to ignore the first (script) element
call_callable(sys.argv[1:])
调用中。
我还创建了一个func()
字典,该字典将允许您以比通过CALLABLES
更为安全的方式按名称访问函数。