首页 > 解决方案 > 如何通过将函数的输出作为输入传递给函数来调用python函数

问题描述

我需要编写一个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等等 for dmname, fdrmenu.

并为 的输出调用相同的函数driverdmname依此类推,直到我们得到所有输出的空值。

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

标签: pythonfunctioninputoutputcall

解决方案


像这样递归的东西?

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'} 

第一个键是“驱动程序”,值为“1.1”。所以现在变量 val == '1.1' 但字典现在是

{'dmname':'1.5-temp','fdrmenu':'1.0-rem'} 

因为第一个键/值对是用 pop 函数删除的

然后使用您提取的 val 检查条件

if type(val) == str:

在这种情况下 val == '1.1' 所以它会检查然后你打印键和值是 'driver' 和 '1.1'

然后检查字典是否为无,如果不是,则以与以前相同的方式调用相同的函数,但是由于您从字典中删除了第一个键/值对,因此下一个键/值元素将是 'dmname ':'1.5-温度'

{'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

推荐阅读