命名函数参数的字符串

时间:2018-07-01 23:47:39

标签: python python-3.x

我正在尝试在python中执行以下操作: 有一个带有命名参数的函数。

def functionA(self, input1, argument2='', argument3='',argument4='DefaultVal'):
## do something

我的输入字符串是通过命令行输入的,应该像这样

testcommand test1 argument2=test2 argument3=test3

这应该解决使用命名参数调用上述函数的问题。什么是最简单的方法

1 个答案:

答案 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更为安全的方式按名称访问函数。