我需要编写一个可以多次调用python函数的python函数调用逻辑。
例如,假设我有一个脚本test.py
我正在运行类似python test.py val
的脚本
val=sys.argv[1]
def check(param, val):
.
.
.
if val == valid.text:
print '{:10s}:{:10}'.format(param, all.text)
values=os.walk(runtime).next()[1]
for param in values:
check(param, val)
所以这里的输出就像
driver 1.1
dmname 1.5-temp
fdrmenu 1.0-rem
所以在这里,我需要通过将输出作为函数调用的输入来运行相同的函数check(param, val)
。
像check(param,val)->这样的函数调用,这里val应该是driver
,以此类推,dmname
和fdrmenu
都是这样。
并为driver
,dmname
的输出调用相同的函数,依此类推,直到获得所有输出的null。
这里sys.srgv[1]
应该仅是第一次分配给val,从下一次开始应该是driver
,dmname
,依此类推。
答案 0 :(得分:0)
像这样递归吗?
data={'driver':'1.1','dmname':'1.5-temp','fdrmenu':'1.0-rem'}
def check(data,key):
val = data.pop(key)
if type(val) == str:
print(key,val)
if data: check(data,list(data.keys())[0])
return None
check(data,list(data.keys())[0])
我不确定我是否正确理解了您的问题,所以不知道自己是否走对了。
此函数基本上采用键/值对的元素的字典(数据),并用字典及其第一个键调用它。
check(data,list(data.keys())[0])
在函数中,您提取与键关联的值并删除该对
val = data.pop(key)
所以字典开始像
{'driver':'1.1','dmname':'1.5-temp','fdrmenu':'1.0-rem'}
第一个键是'driver',值是'1.1'。所以现在变量val =='1.1'但是字典现在是
{'dmname':'1.5-temp','fdrmenu':'1.0-rem'}
因为使用弹出功能删除了第一个键/值对
然后使用您提取的val检查条件
if type(val) == str:
在这种情况下,val =='1.1',因此它将进行检查,然后打印键和值为'driver'和'1.1'的值
然后,您检查字典是否为None,如果不是,则以与以前相同的方式调用相同的函数,但是由于您从字典中删除了第一个键/值对,因此下一个第一个键/值元素将是'dmname':'1.5-temp'
{'dmname':'1.5-temp','fdrmenu':'1.0-rem'}
下次调用字典将只是一个元素
{'fdrmenu':'1.0-rem'}
最后一次调用的字典将为空
{}
所以条件
if data
不会检查,函数将返回None
如果我正确地理解了您的问题,则可以对成对的参数和值执行类似的操作。
我修改了该函数以使用您显然拥有的数据类型,因此该函数的输出将为
driver 1.1
dmname 1.5-temp
fdrmenu 1.0-rem