第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

更新方法內(nèi)函數(shù)內(nèi)的全局變量

更新方法內(nèi)函數(shù)內(nèi)的全局變量

猛跑小豬 2021-06-10 14:21:11
我在這樣的類的方法中有一個函數(shù):class A():                   def run(self):        exit=False        def walk():             global exit             #DoStuff - change exit variable        walk()        print(exit)現(xiàn)在,該函數(shù)walk應(yīng)該更改exit變量。但是這個變量總是False像 set before 一樣在函數(shù)之外。如果此函數(shù)將此變量設(shè)置為 ,我如何更改此變量用作標(biāo)志以在函數(shù)外部訪問它True?我對這個變量的范圍很困惑。我使用 python 3.6。
查看完整描述

2 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

您當(dāng)前的設(shè)置


class A:

    def run(self):

        exit = False


        def walk():

             global exit

             exit = True

        walk()

        print(exit)


a = A()

a.run() # False

print(exit) # True

打印False是因為exit您在里面打印的內(nèi)容run在 范圍內(nèi)run,它不是全局變量。您實際上是在設(shè)置一個全局變量exitin walk- 請參閱第二次調(diào)用printGive True。


您想要的global是nonlocal讓您修改自由變量的關(guān)鍵字。global然而,讓我們檢查一下沒有首先會發(fā)生什么。


class A:

    def run(self):

        exit = False


        def walk():

             exit = True

        walk()

        print(exit)


a = A()

a.run() # False

代碼打印False是因為run不關(guān)心在walk. 加上nonlocal然而


class A:

    def run(self):

        exit = False


        def walk():

             nonlocal exit

             exit = True

        walk()

        print(exit)


a = A()

a.run() # True

代碼將輸出True,因為exit = True現(xiàn)在exit正在 的封閉非局部范圍內(nèi)設(shè)置變量run。


您應(yīng)該為其他上下文研究的關(guān)鍵主題是閉包和自由變量。




查看完整回答
反對 回復(fù) 2021-06-15
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊

您可以在nonlocal此處使用關(guān)鍵字。一探究竟:


>>> def run():

...   e=False

...   print(e)

...   def walk():

...     nonlocal e

...     e=True

...     print(e)

...   walk()

...   print(e)

...

>>> run()

False

True

True

然而,這是非常糟糕的形式!讓變量exit成為 A 類的屬性是標(biāo)準(zhǔn)的。


class A():


    def __init__(self):

        self.exit = False


    def run(self):

        self.exit = False


        def walk():

            #DoStuff with self.exit variable

            self.exit = True

        walk()

        print(self.exit)

順便說exit一句,是 Python 中的保留關(guān)鍵字,因此如果您不想破壞語言,則應(yīng)避免為變量指定該名稱。


查看完整回答
反對 回復(fù) 2021-06-15
  • 2 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號