python: 如何改变函数输入参数的值?
python: how to change the value of function's input parameter?
我尝试在函数中修改字符串的值,如下所示:
>>> def appendFlag(target, value):
... target += value
... target += " "
...
>>> appendFlag
<function appendFlag at 0x102933398>
>>> appendFlag(m,"ok")
>>> m
''
嗯,看来 "target" 只是在函数内部改变了,但是如何使新值在函数外部可行呢?谢谢
您的函数需要 return 新值。
target
变量仅在 appendFlag
函数内有效。
def appendFlag(target, value):
...
return target
m = appendFlag(m, "ok")
这由 returning 在 python 中处理。
def appendFlag(target, value):
target += value
target += " "
return target
你可以这样使用它:
m = appendFlag(m,"ok")
您甚至可以 return 几个这样的变量:
def f(a,b):
a += 1
b += 1
return a,b
并像这样使用它:
a,b = f(4,5)
您需要使用可修改的对象
>>> m = []
>>> def appendFlag(target, value):
... target.append(value)
... target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']
函数内的变量只有函数作用域,如果你在函数内改变变量的值,它不会反映到函数外。如果你想改变全局变量m的值,从函数外部更新它如下
def appendFlag(target, value):
target += value
target += " "
return target
m=''
m=appendFlag(m,'ok')
可变数据类型,例如列表或字典,可以在函数内更改而无需返回:
def duplicate_last(l):
l.append(l[-1])
l = [1, 2, 3]
duplicate_last(l)
原因是 python 中可变对象和不可变对象的内存管理不同。
创建一个新的class并将目标设置为class的成员。然后尝试 setattr(class, 'target', value).
我尝试在函数中修改字符串的值,如下所示:
>>> def appendFlag(target, value):
... target += value
... target += " "
...
>>> appendFlag
<function appendFlag at 0x102933398>
>>> appendFlag(m,"ok")
>>> m
''
嗯,看来 "target" 只是在函数内部改变了,但是如何使新值在函数外部可行呢?谢谢
您的函数需要 return 新值。
target
变量仅在 appendFlag
函数内有效。
def appendFlag(target, value):
...
return target
m = appendFlag(m, "ok")
这由 returning 在 python 中处理。
def appendFlag(target, value):
target += value
target += " "
return target
你可以这样使用它:
m = appendFlag(m,"ok")
您甚至可以 return 几个这样的变量:
def f(a,b):
a += 1
b += 1
return a,b
并像这样使用它:
a,b = f(4,5)
您需要使用可修改的对象
>>> m = []
>>> def appendFlag(target, value):
... target.append(value)
... target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']
函数内的变量只有函数作用域,如果你在函数内改变变量的值,它不会反映到函数外。如果你想改变全局变量m的值,从函数外部更新它如下
def appendFlag(target, value):
target += value
target += " "
return target
m=''
m=appendFlag(m,'ok')
可变数据类型,例如列表或字典,可以在函数内更改而无需返回:
def duplicate_last(l):
l.append(l[-1])
l = [1, 2, 3]
duplicate_last(l)
原因是 python 中可变对象和不可变对象的内存管理不同。
创建一个新的class并将目标设置为class的成员。然后尝试 setattr(class, 'target', value).