python:如何更改函数输入参数的值?

问题描述 投票:2回答:5

我试图修改函数内部字符串的值,如下所示:

>>> def appendFlag(target, value):
...     target += value
...     target += " "
...
>>> appendFlag
<function appendFlag at 0x102933398>
>>> appendFlag(m,"ok")
>>> m
''

那么,似乎“目标”只是在功能内改变了,但如何使新值在功能之外可行?谢谢。

python function parameters reference mutable
5个回答
2
投票

这是通过返回在python中处理的。

def appendFlag(target, value):
   target += value
   target += " "
   return target

你可以像这样使用它:

m = appendFlag(m,ok)

你甚至可以返回几个这样的变量:

def f(a,b):
   a += 1
   b += 1
   return a,b

并像这样使用它:

a,b = f(4,5)

1
投票

您的函数需要返回新值。 target变量仅在appendFlag函数内具有范围。

def appendFlag(target, value):
   ...
   return target

m = appendFlag(m, "ok")

1
投票

要更新m的值,您应该return连接值并将其分配给变量m

def appendFlag(target, value):
    target += value
    target += " "
    return  target

print(appendFlag)
m = "hey"
m = appendFlag(m,"ok")
print(m)

OUTPUT:

<function appendFlag at 0x000001423C99F268>
heyok 

1
投票

您需要使用可以修改的对象

>>> m = []
>>> def appendFlag(target, value):
...     target.append(value)
...     target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']

1
投票

函数内部的变量只有函数作用域,如果从函数内部改变变量的值,它就不会反映在函数外部。如果要更改全局变量m的值,请从函数外部更新它,如下所示

 `def a(target, value):
        target += value
        target += " "
        return target
  m=''
  m=a(m,'ok')

`

© www.soinside.com 2019 - 2024. All rights reserved.