日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...

發(fā)布時(shí)間:2024/9/27 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)嵌套

  • 在一個(gè)函數(shù)內(nèi)定義了另一個(gè)函數(shù)
  • 如圖,定義了一個(gè)outer函數(shù),然后在outer函數(shù)里面又定義了一個(gè)inner()函數(shù),此時(shí)我們只能在outer函數(shù)調(diào)用inner()函數(shù),如果在outer函數(shù)外調(diào)用inner函數(shù)就會(huì)報(bào)錯(cuò),那這里就引出了一個(gè)概念,作用域。
  • 函數(shù)有可見(jiàn)范圍,這就是作用域的概念
  • inner這里成為是outer函數(shù)的內(nèi)部函數(shù),不能在外部直接被調(diào)用,否則就會(huì)報(bào)錯(cuò)!

作用域

  • 一個(gè)標(biāo)識(shí)符的可見(jiàn)范圍,這就是標(biāo)識(shí)符的作用域,一般常說(shuō)的是變量的作用域。
  • 全局作用域
    • 在整個(gè)程序運(yùn)行環(huán)境中都可見(jiàn)
  • 局部作用域
    • 在函數(shù)、類等內(nèi)部可見(jiàn)
    • 局部變量使用范圍不能超過(guò)其所在的局部作用域
    • 如圖,x就是全局作用域 fn1和fn2函數(shù)都可以使用 但是y就是只能在fn1內(nèi)使用,如果再fn2使用就會(huì)報(bào)錯(cuò)!
  • 為了更明確的理解,我們?cè)賮?lái)看一個(gè)例子
  • 都為o,一個(gè)是outer2函數(shù)的變量,一個(gè)是內(nèi)部函數(shù)inner的變量,當(dāng)我們更改了內(nèi)部函數(shù)o的值你會(huì)發(fā)現(xiàn),內(nèi)部函數(shù)打印出來(lái)的是97,但是在在外部函數(shù)繼續(xù)打印的時(shí)候,還是原來(lái)的65,內(nèi)部函數(shù)的更改,其實(shí)沒(méi)有影響外部變量o的值,所以這個(gè)例子更能反映作用域的概念!
  • 從這個(gè)例子可以看出
    • 外層變量作用域在內(nèi)存作用域是可見(jiàn)的
    • 內(nèi)層作用域,如果定義了o = 97,其實(shí)相當(dāng)于重新定義了一個(gè)變量o,但是這個(gè)o并沒(méi)有覆蓋外層作用域outer中的o
    • 我們?cè)賮?lái)看一個(gè)例子
  • 如圖,首先我們?nèi)肿兞慷x了一個(gè)x,然后在函數(shù)內(nèi)做了自加1的操作,然后系統(tǒng)就報(bào)錯(cuò)了,這是為什么呢?
  • 其實(shí)這里也解釋了上面的概念,首先x += 1 就是 x = x +1 ,這個(gè)操作等于在foo函數(shù)里面又定義了一個(gè)x變量,就跟外面的x無(wú)關(guān)了,但是這個(gè)x都沒(méi)賦值過(guò),也不知道什么類型,然后就去 +1,自然就報(bào)錯(cuò)了!
  • 那怎么解決這個(gè)問(wèn)題呢,有時(shí)候我們就想用這個(gè)全局變量呢?

全局變量global

  • 如圖,使用global關(guān)鍵字的變量,將foo內(nèi)的x聲明為使用外部的全局作用域中定義的x
  • 全局作用域中必須有x的定義
  • 那如果全局作用域沒(méi)有這個(gè)定義呢? 答案是要報(bào)錯(cuò)的!
  • 那再思考一個(gè)問(wèn)題,如果在內(nèi)部函數(shù)定義全局變量以后,外部能訪問(wèn)到嗎?
  • 如圖,我在foo函數(shù)內(nèi),定義了一個(gè)x=10,然后加1,在外部打印后變成11,說(shuō)明結(jié)果正確!這里的x的作用域一直都是全局的!
  • globel總結(jié)
    • 內(nèi)部作用域使用x=10的賦值語(yǔ)句會(huì)重新定義局部作用域使用的變量x,但是這個(gè)作用域一旦使用過(guò)globe聲明過(guò),那么x=10就等于為全局作用域的變量x賦值
    • 但是即使外部作用域的變量可以在內(nèi)部作用域使用,但也不要直接那樣用,函數(shù)就是為了封裝,跟外界隔離,盡量用函數(shù)的形參傳參來(lái)解決,所有,最后總結(jié)一句話,就是不要用 globel,學(xué)習(xí)它只是為了深刻理解變量作用域而已!切記!

好了,今天的課程就到這里,此章節(jié)還是比較重要的,好好練習(xí)一下!

總結(jié)

以上是生活随笔為你收集整理的node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。