亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python函數中使用全局變量?

如何在python函數中使用全局變量?

神不在的星期二 2021-03-24 17:12:25
如何在python函數中設置全局變量?
查看完整描述

3 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

考慮以下代碼:


a = 1


def f():

    # uses global because it hasn't been rebound

    print 'f: ',a


def g():

    # variable is rebound so global a isn't touched

    a = 2

    print 'g: ',a


def h():

    # specify that the a we want is the global variable

    global a

    a = 3

    print 'h: ',a


print 'global: ',a

f()

print 'global: ',a

g()

print 'global: ',a

h()

print 'global: ',a

輸出:


global:  1

f:  1

global:  1

g:  2

global:  1

h:  3

global:  3

基本上,當您需要每個函數訪問同一變量(對象)時,都使用全局變量。不過,這并不總是最好的方法。


查看完整回答
反對 回復 2021-03-29
?
森林海

TA貢獻2011條經驗 獲得超2個贊

全局可以被任何函數訪問,但是只有在函數內部使用'global'關鍵字明確聲明它時,才能對其進行修改。以實現計數器的函數為例。您可以使用如下全局變量來做到這一點:


count = 0


def funct():

    global count

    count += 1

    return count


print funct() # prints 1

a = funct() # a = 2

print funct() # prints 3

print a # prints 2


print count # prints 3

現在,這一切都很好,但是,除了常量之外,對其他任何東西都使用全局變量通常不是一個好主意。您可以使用閉包作為替代實現,這樣可以避免污染名稱空間并且更加簡潔:


def initCounter():

    count = 0

    def incrementCounter():

        count += 1

        return count


    #notice how you're returning the function with no parentheses 

    #so you return a function instead of a value

    return incrementCounter 


myFunct = initCounter()

print myFunct() # prints 1

a = myFunct() # a = 2

print myFunct() # prints 3

print a # prints 2


print count # raises an error! 

            # So you can use count for something else if needed!


查看完整回答
反對 回復 2021-03-29
  • 3 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號