python: как изменить значение входного параметра функции? - PullRequest
2 голосов
/ 21 марта 2019

Я попытался изменить значение строки внутри функции, как показано ниже:

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

Что ж, кажется, "цель" изменяется только внутри функции, но как сделать новое значение жизнеспособнымвне функции?Спасибо.

Ответы [ 5 ]

2 голосов
/ 21 марта 2019

Это обрабатывается в 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 голос
/ 21 марта 2019

переменные внутри функции имеют только область видимости функции, если вы измените значение переменной внутри функции, оно не будет отражено вне функции. если вы хотите изменить значение глобальной переменной m, обновите его извне функции следующим образом

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

`

1 голос
/ 21 марта 2019

Вам нужно использовать объект, который можно изменить

>>> m = []
>>> def appendFlag(target, value):
...     target.append(value)
...     target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']
1 голос
/ 21 марта 2019

Чтобы обновить значение 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 голос
/ 21 марта 2019

Ваша функция должна вернуть новое значение.Переменная target имеет область видимости только в функции appendFlag.

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

m = appendFlag(m, "ok")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...