【问题标题】:how to call the python function by passing the output of the function as input to the function如何通过将函数的输出作为输入传递给函数来调用python函数
【发布时间】:2019-02-12 07:20:03
【问题描述】:

我需要写一个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 等的输出调用相同的函数,直到我们得到所有输出的空值。

这里sys.srgv[1]应该只在第一次分配给val,从下一次应该是driverdmname等等。

【问题讨论】:

  • for val in ('driver', 'dmname', 'fdrmenu'): 代替sys.argv 怎么样?
  • values=os.walk(runtime).next()[1]放在for循环里面就可以了?
  • @Klaus D - 'driver', 'dmname', 'fdrmenu'。这些不是静态的,输出每次都会改变。我们不能硬编码输出
  • @Nihal Sangeeth - 我们不应该将 values=os.walk(runtime).next()[1] 放在 for 循环中
  • @dubru 也许对这个问题更清楚一点可能会对我们有所帮助。

标签: python function input output call


【解决方案1】:

像这样递归的东西?

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'

然后您检查字典是否为 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

【讨论】:

    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2020-12-23
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多