如何在Python3中更改参数的值



我想将n个变量传递给python中的一个函数,并让该函数清除这些变量。我的第一次尝试是

list_of_variables = [a, b, c,]
def sanitize(*args):
for arg in args:
arg = str(arg) #example
sanitize(*list_of_variables)

但是arg变为局部变量,并且原始数组不受影响。

尝试#2

for arg in args:
global arg

但由于arg是在全局声明之前分配的,因此这并不起作用。将全局arg置于循环之上也不起作用。

有没有办法让这个函数对n个变量执行某种操作。

如果您将var(s(放在列表中,则无需使用间接寻址,只需在sancil:中读取列表即可

a=10
b= 12/3
c= "ABCDEF"
list_of_variables = [a, b, c]
def sanitize(aList):
for i in range (0, len(aList)):
aList[i] = str(aList[i])
sanitize(list_of_variables)
print(list_of_variables)

结果:['10', '4.0', 'ABCDEF']

但这对sanitize(a,b,c)不起作用,因为python创建的是元组,而不是列表,并且元组不能修改;

如果您想使用带有var(s(的自由列表的消毒,则必须返回除初始元组之外的其他内容。一个代码可能是:

def sanitize(*args):
aList=[]
for arg in args:
aList.append(str(arg))
return aList
result = sanitize(a,b,c)
print(result)

你得到:['10', '4.0', 'ABCDEF']

但是要注意,在这些例子的任何情况下,a、b或c都保持不变。print (a,b,c)将始终给出10 4.0 ABCDEF

您没有像在C中那样操作指针!

HTH-

您可以重新分配列表的成员,如下所示:

def sanitize(args):
for index,arg in enumerate(args):
args[index] = str(arg) #example
list_of_variables = [a, b, c,]
sanitize(list_of_variables)

您可以将已清除的变量从函数返回给调用者。此外,由于在调用函数时将列表传递给函数,因此不需要非关键字变量*kwargs,因为列表是非常好的变量,可以作为函数的参数:

list_of_variables = [a, b, c]
def sanitize(*args):
l = []
for arg in args:
l.append(str(arg)) 
return l
list_of_variables = sanitize(list_of_variables)

相关内容

  • 没有找到相关文章

最新更新