簡體   English   中英

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
''

好吧,似乎“目標”只是在函數內改變,但如何使新值在函數外可行? 謝謝。

這是通過返回在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', ' ']

我試圖修改函數中字符串的值,如下所示:

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

好吧,似乎“目標”僅在函數內更改,但是如何使新值在函數外可行? 謝謝。

函數內部的變量只有函數作用域,如果你從函數內部改變變量的值,它不會在函數外部得到反映。 如果要更改全局變量 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中可變和不可變對象的內存管理不同。

您的函數需要返回新值。 target變量僅在appendFlag函數內具有作用域。

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

m = appendFlag(m, "ok")

創建一個新類並將目標設置為類的成員。 然后嘗試 setattr(class, 'target', value)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM