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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

函數嵌套

  • 在一個函數內定義了另一個函數
  • 如圖,定義了一個outer函數,然后在outer函數里面又定義了一個inner()函數,此時我們只能在outer函數調用inner()函數,如果在outer函數外調用inner函數就會報錯,那這里就引出了一個概念,作用域。
  • 函數有可見范圍,這就是作用域的概念
  • inner這里成為是outer函數的內部函數,不能在外部直接被調用,否則就會報錯!

作用域

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

全局變量global

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。