簡體   English   中英

如何更改每個函數中的全局變量而不影響 Python 中的函數?

[英]how can I change the global variable in each function without the functions affecting each other in Python?

我的全局變量count=0正在下面的函數(方法)中更改:

def Counter(counter,boolean=False)->int:
    if boolean:
        counter+=1
    else:
        counter=0

    return counter

其他函數使用Counter函數:

def func1():
    global count
    count=Counter(count,True)
    print("func1:",count)

def func2():
    global count
    count=Counter(count,True)
    print("func2:",count)

當像for循環一樣再次運行這些函數時

for _ in range(3):
    func1()
    func2()

輸出是:

func1:1
func2:2
func1:3
func2:4
func1:5
func2:6

但是輸出必須是這樣的:

func1:1
func2:1
func1:2
func2:2
func1:3
func2:3

我研究了不同的方法,但找不到答案。 我怎樣才能做到這一點?

為什么以前的代碼不起作用?

global關鍵字使計數器變量可從兩個函數訪問。
使用global變量是一種不好的做法,不要這樣做。

如何實現你所要求的?

下面的單詞為每個函數分配一個計數器,在每次調用時修改它。


def func1():
    func1.count+=1
    print("func1:", func1.count)

def func2():
    func2.count += 1
    print("func1:", func2.count)

func1.count=0
func2.count=0

for _ in range(3):
    func1()
    func2()

更多關於

你問的是如何在python函數中使用靜態變量。
術語“函數靜態變量”是指可由函數訪問和擁有的變量。
Python 不以直接的方式支持靜態變量,例如在 C# 或 Java 等語言中,但是在這個線程中還有其他漂亮的解決方案,這些解決方案更復雜並且需要使用裝飾器- 所以我沒有提到他們。

暫無
暫無

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

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