Py修行路 python基础 (九)作用域 函数嵌套 闭包
名稱空間與作用域
變量,函數
分成三種
?
#內置名稱空間? 內置函數,
???????? 系統函數內部自定義的。
python查看內置函數,命令:
import builtins
dir(builtins)
#全局名稱空間? 文件中 頂頭寫,沒有任何縮進定義的函數或是變量。
定義之后,在整個文件的任何位置都可以用。
?
#局部名稱空間?
定義之后,在局部環境內可以調用,例如在一個定義函數中定義的變量,只能在當前函數內部調用,往外全局或是其他函數均不能調用。
??
在外部,或是其他定義的函數調用的話,會報錯!
內置和全局名稱空間 合稱全局作用域
局部名稱空間 叫做局部作用域
#先定義后使用!!!
?
使用尋找過程: 局部找 本層找不到的話,會依次往上一層定義的函數去找,找不到--->全局找 ,全局找不到的話 ---> 從系統的內置找
?
?
名稱文件的查詢? 全局:globals()?? 局部:locals()? 輸出為字典格式
x=1
def func()
??? print("from func")
??? x=2
print(globals())
?
函數嵌套及靜態嵌套域
#嵌套調用
#嵌套定義
?
函數對象與閉包
?
函數是第一類對象。
函數可以被賦值,
可以把函數當成參數傳遞,
把函數當成返回值,
把函數當成容器類型的元素。
?
#閉包
定義:首先必須是內部定義的函數,該函數包含對外部作用域而不是全局作用域名字的引用。
沒值的話會返回None.
?
無參裝飾器
轉載于:https://www.cnblogs.com/zh605929205/p/6682071.html
總結
以上是生活随笔為你收集整理的Py修行路 python基础 (九)作用域 函数嵌套 闭包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017.4.5下午
- 下一篇: SystemVerilog搭建验证平台使