簡體   English   中英

從另一個 function 更改一個 function 的變量

[英]Changing a variable of one function from another function

有沒有辦法在 function A 調用 function B 時將 function A 中的變量更改為 function B

例如:

def a():
     flag = False
     b()
     print(flag)

def b():
     flag = True

我想要標志 == 真

另一個例子:

def a():
    list = [1,2,3]
    b():
    return list

 def b():
    list.append(4)

flag 變量的局部范圍為 function A 和 B。這並不意味着它們是同一個變量。 它們彼此完全不同,共同占據完全不同的地址空間。

如果您希望 function B 更改 function A 中標志變量的值,您可以簡單地讓 function B 返回值。

def b():
   flag = True 
   return flag

另一種方法是使用按引用傳遞,它允許您更改 memory 地址空間中的變量值。 這僅適用於可變對象。 在這種情況下,boolean 是不可變的,因此此處無法通過引用傳遞。

您需要將其作為參數傳遞給 function 或創建一個全局變量(通常被認為是不好的樣式)

flag = False


def a(): 
    b()
    print(flag)


def b():
    global flag
    flag = True
    
a()  # True

我會考慮為此創建一個 class 。 這樣,您無需跟蹤全局變量,只需跟蹤 object:

class flagChangerClass():
    def __init__(self):
        self.flag = False

    def a(self):
        self.b()
        print(self.flag)

    def b(self):
        flag = True

這樣你就可以在初始化 object 之后調用它:

flagChanger = flagChangerClass() #Equivalent to flag = False
flagChanger.a() # Changes flag by calling function b in class

如果您想使用列表:

class listChangerClass():
    def __init__(self):
        self.internalList = [1,2,3]

    def a(self):
        self.b()
        print(self.internalList )

    def b(self):
        self.internalList.append(4)

listChanger = listChangerClass()
listChanger.a()
print(listChanger.internalList)

暫無
暫無

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

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