以下のように、関数内の文字列の値を変更しようとしました:
>>> def appendFlag(target, value):
... target += value
... target += " "
...
>>> appendFlag
<function appendFlag at 0x102933398>
>>> appendFlag(m,"ok")
>>> m
''
まあ、「ターゲット」は関数内でのみ変更されるようですが、新しい値を関数外で実行可能にする方法は?ありがとう。
これは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)
変更可能なオブジェクトを使用する必要があります
>>> m = []
>>> def appendFlag(target, value):
... target.append(value)
... target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']
関数は新しい値を返す必要があります。 target
変数は、appendFlag
関数内でのみスコープを持ちます。
def appendFlag(target, value):
...
return target
m = appendFlag(m, "ok")
m
の値を更新するには、連結した値をreturn
して変数m
に割り当てる必要があります。
def appendFlag(target, value):
target += value
target += " "
return target
print(appendFlag)
m = "hey"
m = appendFlag(m,"ok")
print(m)
[〜#〜]出力[〜#〜]:
<function appendFlag at 0x000001423C99F268>
heyok
関数内の変数は関数スコープのみを持っています。関数内から変数の値を変更した場合、関数外に反映されません。グローバル変数mの値を変更する場合は、関数の外部から次のように更新します
`def a(target, value):
target += value
target += " "
return target
m=''
m=a(m,'ok')
`