如何通过将函数的输出作为输入传递给函数来调用python函数

时间:2019-02-12 07:20:04

标签: python function input output call

我需要编写一个可以多次调用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,以此类推,dmnamefdrmenu都是这样。

并为driverdmname的输出调用相同的函数,依此类推,直到获得所有输出的null。

这里sys.srgv[1]应该仅是第一次分配给val,从下一次开始应该是driverdmname,依此类推。

1 个答案:

答案 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