Python 函數命名空間筆記
命名空間和作用域: ????命名空間有三種: ????????內置命名空間??--python解釋器 ????????????就是python解釋器一啟動就可以使用的名字存儲在命名空間中 ????????????內置的名字在啟動解釋器的時候被加載進內存里面 ????????全局命名空間??--我們寫在文件中的代碼但不是寫在函數中的代碼 ????????????時在程序從上到下被執行的過程中依次加載到內存中的 ????????????放置了我們設置的所有變量和函數名 ????????局部命名空間??--函數 ????????????就是函數內部定義的名字 ????????????當調用函數的時候?才會產生這個命名空間,隨著函數執行的結束,這個命名空間就又消失了。 ?????在局部:可以使用全局、內置命名空間中的名字 ?????在全局:可以使用內置命名空間中的名字,但不能使用局部命名空間中的名字 ?????在內置:不能使用局部和全局命名空間中的名字 ????? 在正常情況下,直接使用內置命名空間中的名字 當我們在全局定義了和內置命名空間中同名的名字時,會使用全局命名空間中的名字 當我自己有的時候,我就不找我的上級要了 如果自己沒有,就找上一級要,上一級沒有再找上一級,如果內置的命名空間都沒有就報錯 多個函數應該擁有多個獨立的局部命名空間,不相互共享 作用域兩種: ????全局作用域:作用在全局,內置和全局命名空間中的名字都屬于全局作用域??--globals() ????局部作用域:作用在局部,函數(局部命名空間中的名字屬于局部作用域)?--locals() ???? 對于不可變數據類型,在局部可以查看全局作用域中的變量 但是不能直接修改 如果想要修改,需要在程序的一開始添加global聲明 如果在一個局部(函數)內聲明一個global變量,那么這個變量在局部的所有操作將對全局的變量有效 nonlocal?只能用于局部變量?找上層中離當前函數最近一層的局部變量 聲明了nonlocal的內部函數的變量修改會影響到?離當前函數最近一層的局部變量 對全局無效 對局部?也只是對?最近的?一層?有影響 命名空間?和?作用域 三種:內置?全局?局部 作用域:全局?局部?globals()?locals() ?????????global??在局部聲明一個全局變量 ?????????nonlocal?在局部聲明最近的上一層局部中的變量 ?作用域鏈?:?小范圍用變量的時候,先從自己的名字空間找, ?????????????找不到就一層一層向外層找,知道找到為止。 ?????????????找不到就報錯。 ?函數的嵌套調用和嵌套定義 ?????定義在函數內部的函數不能被外界直接調用 ?????內部函數可以使用外部的變量 ?函數名的本質 ?????就是一串內存地址 ?????可以賦值、可以作為容器類型的元素、函數的參數和返回值?——?第一類對象 ?閉包?:?內部函數使用外部函數的變量

軟件開發 人工智能 云計算 AI
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。