python语言中strike_Python学习笔记
嵌套函數作用域
def make_adder(augend):
def add(addend):
return augend + addend
return add
內部的函數可以訪問外部函數scope內的變量,但是不能夠重新對其賦值。如果重新賦值那么會在內部函數的scope內創建一個同名的本地變量(Python不允許對non-local變量賦值)。
yield和生成器(generator)
generator是通過執行generator function來創建的。generator function是函數體中有yield語句的函數。generator的用途是用來生成一系列的值,generator.next()可以獲取到下一個值,注意,由此可以看出generator是可以迭代的(iterable),所以可以使用for...in語句來遍歷generator能夠生成的所有值。
with語句和context manager
介紹with語句之前首先要介紹context manager。context manager是有兩個特殊方法(__enter__()和__exit__())的類。以下面的with語句為例:
with open('data.txt') as f:
lines=f.readlines()
上面的代碼其實就等同于:
f = open('data.txt')try:
lines=f.readlines()finally:
f.close()
open()函數打開一個文件,返回一個file對象,file類就是一個context manager。在進入到 lines = f.readlines() 之前 ,會先執行file.__enter__()方法,該方法返回self,也就是file對象本身。然后在退出with語句塊(lines = f.readlines())之前執行file.__exit__(type,value,traceback)方法。with語句的好處是通過context manager封裝了try...finally語句,起到代碼重用的目的。
總結
以上是生活随笔為你收集整理的python语言中strike_Python学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 彻底卸载VS2015
- 下一篇: Python已知经纬度求两点距离