python - 如何通过将函数的输出作为输入传递给函数来调用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
.
并为 的输出调用相同的函数driver
,dmname
依此类推,直到我们得到所有输出的空值。
这里sys.srgv[1]
应该只第一次分配给 val,从下次开始应该是driver
,dmname
依此类推。
解决方案
像这样递归的东西?
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
推荐阅读
- python - 如何在for循环中获取索引号
- php - 带有 Flickity 滑块的 Wordpress 循环 php 问题
- powershell - 无法访问 Microsoft.SharePoint.Client.ContentType 类型的属性
- arrays - 推迟指向具有灵活数组成员的结构的指针不会“复制”FAM?
- typescript - 如何在 Typescript 中获取枚举大小作为类型
- python - 如何使用python将具有重复值的两个列表组合到字典中
- php - Windows apache虚拟主机的Laravel存储问题
- arm - 在调试模式下擦除 Flash 期间出现 HardFault
- python - 潜在客户评分:更改“新近度”列以反映分数较高的最近日期和分数较低的较晚日期的最佳方法是什么?
- azure-functions - Azure 持久编排 - LockAsync