轉載:http://omencathay.itpub.net/post/30163/414347
簡單介紹一下python未來將會支援的一些語言特點 ,雖然Ibm的網站上也有介紹.但是太淩亂了.而且中翻譯過後,代碼的格式想狗屎一樣.
下面簡單介紹一下這些特點
nested_scopes: 改變名空間的搜尋過程generators:使用產生器.能夠產生能儲存目前狀態的函數.division:精確的除法absolute_import:包含絕對路徑.方便includewith_statement:安全的開啟檔案
想使用這寫語言特點, 在檔案開頭加一句
from __future__ import FeatureName
比如
from __future__ import division
就能用了
下面介紹一下他們
nested_scopes: 改變使用lambda時名空間的搜尋過程,按照dive into python中的話說
generators:使用產生器.能夠產生能儲存目前狀態的函數.
注意generator使用yield返回.不是return
下面的generator每次調用都會返回字母表中下一個字母,從a開始,到z結束.
from __future__ import generators
def alphabet():
n=0
while n<26:
char=chr(ord('a')+n)
n+=1
yield char #在這裡返回,下次調用時從這裡開始
調用方法
gen=alphabet()
for char in gen:
print char
或者使用gen.next()函數.可以看到,函數內部控制變數n的值被保留下來了
在2.5中generator功能更加豐富,yield可以作為運算式的以部分,使用send方法來改變其的返回時的狀態.
具體http://blog.donews.com/limodou/archive/2006/09/04/1028747.aspx
當遍曆所有變數以後會引發StopIteration異常
division:精確的除法,同義
>>> 22/7
3
>>> from __future__ import division
>>> 22/7
3.1428571428571428
absolute_import:包含絕對路徑.方便include
很多時候當我們要include上一層目錄的檔案時,不得不手動使用os來把上層目錄加入搜尋path.否則include就會找不到檔案.使用了這個特性後.絕對路徑自動加入了.可以使用絕對路徑來
下面是從一封郵件裡面摘錄的
>> work>> |>> |- foo.py # print "foo not in bar">> |>> `- bar>> |>> |- __init__.py>> |>> |- foo.py # print "foo in bar">> |>> |-
absolute.py # from __futer__ import absolute_import>> | # import foo>> |>> `- relative.py # import foo>>>>>>* Where "work" is in the path.>>>>>> (1)>>>> C:work>python
-c "import bar.absolute">> foo not in bar>>>> C:work>python -c "import bar.relative">> foo in bar>>>>
with_statement:安全的開啟檔案
使用with open("file name ") as xx開啟檔案.這樣不用close檔案了.python會自動幫我們做這件事.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1764543