python關鍵字詳解


今天依舊在啃:《笨方法學python》,其中習題37是復習各種關鍵字。我本想百度一下記一下就ok了,但是百度出來第一個就Hongten的博客。我才意識到我也有博客,我應該學習他,把這些積累的東西都放到博客中。

主要參考:http://www.cnblogs.com/hongten/p/hongten_python_keywords.html#undefined

python2.7關鍵字詳解:

and del from not while as elif
global or with assert else if pass
yield break except import print class exec
in raise continue finally is return def
for lambda try        

一共:31個。注意:如果要現在自己電腦中運行我寫的這些代碼,需要在第一行加上 

#coding:utf-8   因為我的輸出中有中文

1.and  :表示邏輯‘與’

2.del  :用於list列表操作,刪除一個或者連續幾個元素。

3.from   :導入相應的模塊,用import或者from...import

4.not    :表示邏輯‘非’

5.while  :while循環,允許重復執行一塊語句,一般無限循環的情況下用它。示例如下:

while Ture: if a > b: add()#調用函數求和
    else: print "輸入錯誤!重新輸入!"

6.as      :as單獨沒有意思,是這樣使用:with....as用來代替傳統的try...finally語法的。

基本思想是with所求值的對象必須有一個__enter__()方法,一個__exit__()方法。

緊跟with后面的語句被求值后,返回對象的__enter__()方法被調用,這個方法的返回值將被賦值給as后面的變量。當with后面的代碼塊全部被執行完之后,將調用前面               返回對象的__exit__()方法。示例如下:

class Sample: def __enter__(self): print "In __enter__()"
        return "Foo"
 
    def __exit__(self, type, value, trace): print "In __exit__()"
 
 
def get_sample(): return Sample() with get_sample() as sample: print "sample:", sample

輸出結果:

In __enter__() sample: Foo In __exit__()

第一步: __enter__()方法被執行

第二步: __enter__()方法返回的值 - 這個例子中是"Foo",賦值給變量'sample'

第三步:執行代碼塊,打印變量"sample"的值為 "Foo"

第四步: __exit__()方法被調用with真正強大之處是它可以處理異常。可能你已經注意到Sample類的__exit__方法有三個參數- val, type 和 trace。這些參數在異常處理中相當有用。

你也可以參考這里:http://zhoutall.com/archives/325

7.elif  :和if配合使用的,if語句中的一個分支用elif表示。

8.global :定義全局變量,我的理解就是:要想給全局變量重新賦值,就要global一下全局變量(相當於告訴你:哦,注意了!下面我要設定全局變量的值的),之后在重新賦值。示例如下:

#coding:utf-8 ################# #習題37:復習各種符號 ################# #前言 # 
#熟悉global

#定義全局變量,變量名全部大寫
NAME = "xueweihan"

#得到NAME值
def get_NAME(): return NAME #重新設定NAME值
def set_NAME(name_value): global NAME NAME = name_value print u"輸出全局變量NAME的值:",get_NAME() new_name = "521xueweihan" set_NAME(new_name)#為全局變量重新賦值
print u"輸出賦值完的全局變量NMAE的值:",get_NAME() 

輸出結果: 

輸出全局變量NAME的值: xueweihan
輸出賦值完的全局變量NMAE的值: 521xueweihan

9.or    :表示邏輯“或”

10.with   :和as一起用,使用的方法請看as,在上面!

11.assert:表示斷言(斷言一個條件就是真的,如果斷言出錯則拋出異常)用於聲明某個條件為真,如果該條件不是真的,則拋出異常:AssertionError

12.else   :看下面if的解釋

13.if       :if語句用於選擇分支,依據條件選擇執行那個語句塊。(這里多說一句:if語句中最好不要嵌套if語句,你可以把嵌套的if語句寫在另一個函數中)

if a > b: print "a > b
elif a < b: print "a < b"
else: print "a = b"

14.pass  :pass的意思就是什么都不做。用途及理解:當我們寫一個軟件的框架的時候,具體方法啊,類啊之類的都不寫,等着后續工作在做。那么就在方法和類里面加上pass,那樣編譯起來就不會報錯了!就像這樣:

#理解pass的用途
def test_pass():pass  #如果不加pass,拋出錯誤:IndentationError: expected an indented block
 test_pass()

15.yield  :用起來和return很像,但它返回的是一個生成器。我這樣說不是很生動。你可以去看看這個關於Python中的yield(最后寫的那個斐波那契,我覺得他就是大神),或者請看下面的代碼:

#理解yield
def test_yield(n): for i in range(n): yield i*2#每次的運算結果都返回
              
for j in test_yield(8): print j,":", print u"結束理解yield"   
#利用yield輸出斐波那契數列 ########## #看這里,太厲害了,不是我寫的。。。。 ##########
def fab(max): a,b = 0,1
    while a < max: yield a a, b = b, a+b print u"斐波那契數列!"
for i in fab(20): print i,",",

輸出結果:

0 : 2 : 4 : 6 : 8 : 10 : 12 : 14 : 結束理解yield 斐波那契數列! 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 ,

16.break  :作用是終止循環,程序走到break的地方就是循環結束的時候。(有點強行終止的意思)注意:如果從for或while循環中終止(break)之后 ,else語句不執行。

17.except :和try一起使用,用來捕獲異常。

  • try:  
  •    block  
  • except [exception,[data…]]:  
  •    block  
  •  
  • try:  
  • block  
  • except [exception,[data...]]:  
  •    block  
  • else:  
  •    block  

該種 Python異常處理語法的規則是:
◆執行try下的語句,如果引發異常,則執行過程會跳到第一個except語句。
◆如果第一個except中定義的異常與引發的異常匹配,則執行該except中的語句。
◆如果引發的異常不匹配第一個except,則會搜索第二個 except,允許編寫的except數量沒有限制。
◆如果所有的except都不匹配,則異常會傳遞到下一個調用本代碼的最高層try代碼中。
◆ 如果沒有發生異常,則執行else塊代碼。

第一種格式:

#理解except
try: num = 5/0 except: print u"計算出錯"

第二種:

try: f = open("file.txt","r")  #如果該文件不存在
except IOError, e:  #捕獲IO異常
   print u"IO錯誤!"
   print e                #輸出錯誤信息,這里e是錯誤信息

輸出結果:

計算出錯 IO錯誤! [Errno 2] No such file or directory: 'file.txt'

18.import :用來導入模塊,有時這樣用from....import

19.print   :輸出

20.class   :定義類

21exec    :我還沒弄懂exec語句用來執行儲存在字符串或者文件中的python語句。可以生成一個包含python代碼的字符串,然后使用exec語句執行這些語句。

22.in       :查找列表中是否包含某個元素,或者字符串a是否包含字符串b。需要注意的是:不可以查看list1是否包含list2。代碼如下:

#理解in
first_list = [1, 2] second_list = [1, 2, 3] element = 1 red = 'red' red_clothes = "red clothes"

print red in red_clothes #true
print first_list in second_list  #false
print element in first_list      #true

輸出結果為:

True
False
True

23.raise  :raise可以顯示地引發異常。一旦執行raise語句,后面的代碼就不執行了

#理解raise
try: raise IOError #這里可以raise一個自定義的錯誤類。那樣就叫做自定義異常了
    print u"是否執行?" #不執行
except IOError: print "IOError test raise"
    

輸出結果如下:

IOError test raise

24.continue:跳過continue后面循環塊中的語句,繼續進行下一輪循環。

25.finally  :看到finally語句,必然執行finally語句的代碼塊。

python異常總結,請看下面的代碼:

One:

#打開一個文件,但有可能找不到
try: f = open('xxx') do something except: do something finally: f.close()

Two:

try: f = open('xxx') except: print 'fail to open' exit(-1) try: do something except: do something finally: f.close()

我們為什么要寫finally,是因為防止程序拋出異常最后不能關閉文件,但是需要關閉文件有一個前提就是文件已經打開了。
在第一段錯誤代碼中,如果異常發生在f=open(‘xxx’)的時候,比如文件不存在,立馬就可以知道執行f.close()是沒有意義的。改正后的解決方案就是第二段代碼。

26.is  :Python中的對象包含三要素:id、type、value

其中id用來唯一標識一個對象,type標識對象的類型,value是對象的值

is判斷的是a對象是否就是b對象,是通過id來判斷的
==判斷的是a對象的值是否和b對象的值相等,是通過value來判斷的

#理解is
e = 1 es = 1.0 ess = 1
print u"""is就是比對id的值,看是否指向同一對象, 這里需要注意的是:同一對象,不是值相等就是同一對象。"""
print id(e) print id(es) print id(ess)

27.return:用於跳出函數,也可以在跳出的同時返回一個值。

28.def    :用於定義方法

29.for   :for....in 一起使用:它在一序列的對象上遞歸,就是遍歷隊列中的每個項目

30.lambda:即匿名函數,不用想給函數起什么名字。提升了代碼的簡潔程度。如:

#理解lambda
g = lambda :"lambda test."
print g() num1 = lambda x, y=1:x + y print num1(1)      #多個變量的時候,可以不給有默認值的變量傳值
print num1(10,10)  #值得注意的是,如果y沒有默認值而且不給它傳值的話報錯!

輸出結果:

lambda test. 2
20

 

31.try  :出現在異常處理中,使用格式為:try...except,try中放想要執行的語句,except捕獲異常

代碼見,25.

ok了,我要斷電了,有幾點沒懂地方明天補全。邊學邊寫,寫了一下午  T.T

終於完成了,在寫這篇博客的過程中我學習到了很多:有些知道什么意思的語句,但是就是不會用自己的話說,參考了別人的博客之后。能夠順利的表達明白了。寫博客真的很漲知識啊!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM