我可以在python中将字符串转换为参数列表吗?
def func(**args):
for a in args:
print a, args[a]
func(a=2, b=3)
# I want the following work like above code
s='a=2, b=3'
func(s)
Run Code Online (Sandbox Code Playgroud)
我知道:
list can,只需使用*list,但list不能有如下元素:a = 2
和eval只能评估表达式
这将是:
def func2(*args):
for a in args:
print a
list1=[1,2,3]
func2(*list1)
func2(*eval('1,2,3'))
Run Code Online (Sandbox Code Playgroud)
Fre*_*abe 13
您可以将输入字符串按到字典中,然后用它调用您的函数,例如
>>> x='a=2, b=3'
>>> args = dict(e.split('=') for e in x.split(', '))
>>> f(**args)
a 2
b 3
Run Code Online (Sandbox Code Playgroud)
你想要一个字典,而不是一个'参数列表'.你也将被关闭使用更好的ast.literal_eval()评估只是 Python的文字:
from ast import literal_eval
params = "{'a': 2, 'b': 3}"
func(**literal_eval(params))
Run Code Online (Sandbox Code Playgroud)
在开始这条路线之前,请确保首先探索了编组选项的其他选项,例如argparse命令行选项,或者用于网络或基于文件的传输或持久性的JSON.
| 归档时间: |
|
| 查看次数: |
9731 次 |
| 最近记录: |