如果您在一個函式中創建區域變數,然后呼叫一個以這些變數為引數的函式。你如何更新該變數的值,使其反映在兩個函式中?
披露:
- 被呼叫的函式是代碼主體中的一個片段,以達到整潔和減少代碼重復的目的。被呼叫的函式只在有條件的情況下被呼叫,不一定會回傳任何東西。它所做的只是一些計算,更新函式引數中傳遞的變數的值。
你將如何讓函式2中的值與函式1中的值更新相同?
預先感謝你!
例如:
def function_1()。
object_1 = 1: object_1 = 1.
object_2 = 2: object_1 = 1.
function_2(object_1, object_2)
print("原始值加起來為{}".format(object_1 object_2))
def function_2(object_1, object_2)。
object_1 = 1: object_1 = 1.
object_2 = 2: object_1 = 1.
print("Update values add up to {}".format(object_1 object_2)
if __name__ == '__main__'/span>:
function_1()
Updated values add up to 6
原始值加起來為3。
uj5u.com熱心網友回復:
如果你把它們放在一個物件中,那么這個物件的參考就會作為引數傳給函式,如果你只是傳一個變數的值,那么它就是作為引數傳的副本。 請看這里的完整解釋
。嘗試一下:
def function_1():
references = {"object_1": 1, "object_2": 2}。
function_2(references)
print("Original values add up to {}". format(references["object_1" references["object_2"] )
def function_2(references)。
references["object_1"] = 1.
references["object_2"] = 2
如果你用其他型別的物件(如串列、類實體或元組)替換字典,這也是可行的。
uj5u.com熱心網友回復:
選項1:將更新的值回傳給呼叫函式
def function_1()。
...
object_1, object_2 = function_2(object_1, object_2)
...
def function_2(object_1, object_2) 。
...
return object_1, object_2
選項2。在function_1()中建立一個資料結構(例如,像一個dict,或一個list或一個自定義類),然后將其作為引數傳遞給function_2()。你在function_2()中對dict所做的修改將反映在function_1()中,因為它是同一個dict,你只是在函式間傳遞了一個對同一個dict的參考作為引數。
def function_1():
...
data = {'object_1': 1, 'object_2': 2}。
function_2(data)
# 變數'data'包含'function_2()'中的變化。
print(data)
...
def function_2(data)。
# 變數'data'指向與'function_1()'中相同的dict。
data['object_2'] = 55。
...
可能還有其他的選擇,我現在沒有想到,但這兩個是比較簡單的,我認為。
uj5u.com熱心網友回復:
在Python中,所有的變數都是通過參考傳遞的,所以你不需要做任何事情,只需要運行代碼即可。
function_1()
更新的值加起來是6。
原始值加起來為3。
它作業了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316182.html
標籤:
上一篇:使用WINDOWS認證的CRMDiscoveryServiceProxy
下一篇:SQL將多行轉換為不同的列
