我想将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)