命名空间与闭包
1 名稱空間與作用域
? 在Python中所有名字的定義都放到namespace中
名稱空間分類:
內置名稱空間
import this?
dir(buil-in) 查看全部內置
全局名稱空間
局部名稱空間
在函數體內等
查詢全局和局部
globals()方法可以獲得全局的內容
該方法獲得的全局內容是調用的時候程序之前已經定義過的全局內容
locals()方法可以獲得局部的內容
2 函數嵌套和靜態嵌套域
? 函數嵌套調用
函數里面調用別的函數
函數的嵌套定義
在函數里面定義別的函數
3 函數對象與閉包
函數對象
函數名稱可以被賦值給變量
函數的執行時函數名稱加()
新賦值的變量也可以加括號執行
閉包
閉包用于包裹函數內部的作用域, 不包裹外部的作用域
閉包的基本形式是:
在函數F1中, 定義F2, F2只能引用F1定義的變量, 之后F1函數返回F2的函數名字
這樣就保證了可以將F1的執行結果賦予給一個變量, 該變量可以在之后的任何時刻隨時可以運行
x = 100 def f1():x=1y=2def f2():print(x,y)return f2f=f1() f() print(f.__closure__) print(f.__closure__[0].cell_contents) print(f.__closure__[1].cell_contents)利用閉包完成爬取Python官網頁面
from urllib.request import urlopen def f1(url):def f2():print(urlopen(url).read())return f2 python=f1('http://www.python.org')python() python()
?
轉載于:https://www.cnblogs.com/weihuchao/p/6676430.html
總結
- 上一篇: 在Tomcat上跑东西时遇到的对我这样新
- 下一篇: Jquery函数大全 - 案例说明