gpt4 book ai didi

python - 函数python的动态参数数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:59 26 4
gpt4 key购买 nike

我在 python 中有以下函数:

def extractParam(word, varName, stringToReplace):
if word.startswith(stringToReplace):
varName=int (word.replace(stringToReplace, ''))
return varName

def getMParams(line):
l = r = b = t = 0
sline = line.strip().split()
for i in range(len(sline)):
l = extractParam(sline[i], l, "l=")
r = extractParam(sline[i], r, "r=")
b = extractParam(sline[i], b, "b=")
t = extractParam(sline[i], t, "t=")
return l, r, b, t

def getIterParams (line):
width = height = stride = x = y = 0
sline = line.strip().split()
for i in range(len(sline)):
width = extractParam(sline[i], width, "width=")
height = extractParam(sline[i], height,"height=")
stride = extractParam(sline[i], stride,"stride=")
x = extractParam(sline[i], x, "x=")
y = extractParam(sline[i], y, "y=")
return width, height , stride, x, y

函数 getMparams 和 getIterParams 完全相同,我的问题是是否有办法创建一个函数来替换它们,我正在考虑类似的事情:

def func (line, params)
//params is an array of parameters (i.e [l,r,b,t] or [width,height,stride,x,y])
//init all params
sline = line.strip().split()
for i in range(len(sline)):
//for everyParam:
param = extractParam(sline[i],param,"param=")

这可能吗?或者还有其他方法吗?

最佳答案

首先,一些风格要点:

  • 您在 extractParam 中处理 varName 的方式丑陋且令人困惑。我花了一段时间才弄清楚您要做什么(即考虑到 extractParam 可能找不到任何数据这一事实)。目前,最好直接处理而不是尝试调用函数。

  • range(len( 你正在做的事 has to stop .

  • 您不需要在拆分之前去除该行 - 任何前导和尾随空格都会在拆分操作期间消失。结果中不会有任何额外的空字符串。

  • sline 这个名字实在是太丑了。您已将 拆分为单词;为什么不将单词称为 words? (在任何情况下,都不要使用缩写和混淆。否则你会得到像 sline 这样实际上不是单词的东西。)

  • 在 Python 中,我们不对函数使用 namesLikeThis(或其他任何东西;尽管我们确实对类使用 NamesLikeThis,首字母大写) .我们使用 names_like_this

另外,看起来你好像在反复尝试替换

也就是说,您提出的方法很好。请注意,由于我们事先不知道将提取多少项,因此我们不能将每一项都扔到一个单独的变量中。但我们可以通过返回一个 dict 轻松解决这个问题。

我的方法如下:我遍历 names,每次尝试在 line 中找到相应的词。找到一个后,我将默认的 value 替换为 0,完成此检查后,我将相应的键值对插入到返回的 result 中。我还采用了一种更简单的方法来截断等号周围的单词。

def extract_params(line, names):
words = line.split()
result = {}
for name in names:
value = 0
for word in words:
maybe_name, equals, maybe_value = word.partition('=')
if maybe_name == name and equals == '=':
value = maybe_value
result[name] = value
return result

这可能会有很大的改进,但很大程度上取决于您的具体规范。我试图创建尽可能符合您的基本逻辑的内容。

关于python - 函数python的动态参数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com