[英]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.