1. 程式人生 > >Python複習知識點(三)

Python複習知識點(三)

  • 迴圈結構
一,while迴圈         使用方式和之前學的一致,這裡只說新加入的
        while...else    當while語句條件為false時候執行else    (else和while平級)   二,for迴圈         和之前的有差別,它支援序列和迭代器作為引數
        簡單用法:
 新增的for-else語句
            和while-else用法一致    for -  else中 for 和else是平級關係,在for迴圈結束後,會執行else語句
  • 函式定義
            def關鍵字開頭,後面接函式名,函式名後面接()引數列表。還有冒號起始             函式體要縮排,函式可以不寫return,不寫預設返回None,函式返回值可以是列表
         這裡對python函式引數的問題分析分析:
        首先要明白python中,型別屬於物件,而變數是沒有型別的。對於這句話的理解看一下程式碼         a= [ 1 , 2 , 3 ]         a= " Runoob "         以上程式碼中,[1,2,3]是List型別,而" Runoob "是string型別。變數a是沒有型別的,她僅僅是一個物件的引用         它可以是list,也可以是string           明白了上面的理論,再回過頭來看函式引數的問題,傳參的型別可以是可變型別,也可以是不可變型別         可變型別:列表,字典         不可變型別:string  tuples  number都是不可變的          那具體什麼叫可變,什麼叫不可變。這就和上面提到的型別屬於物件,變數沒有型別 有關係         不可變型別:                             例如 a=10,    然後我們在賦值  a=5    這裡實際是新生成了一個物件 10(int型別),然後我們讓a去指向了它                   我們並沒有改變a的值,只是讓他重新指向了一個值,之前的5被丟棄了          可變型別:                     list=[1,2,3,4] 我們現賦值list[2]=10      這裡將第三個元素的值改變了,但是!list本身並沒有動,它只是內容的一部分被修改了              綜上理論,我們可以得出:我們在函式傳參的時候
          1.    如果傳入的是不可變型別(類似於c++的值傳遞),我們傳遞進去後,函式內無論怎麼去改變這個引數的值,都不會影響原有的引數  
                            def   fun ( a ) :
                                     a=10
                            b=2
                            fun(2)
                            print ( b )            #這裡輸出的還是2,我們並沒有去改變b        (這是傳入不可變型別的物件)
              2.    如果傳入可變物件的時候,就相當於我們在傳c++中的引用傳遞,我們如果穿list 或者字典。在函式裡面去修改值,原來的引數也會隨之發生改變
          匿名函式
    我們使用lambda來建立匿名函式,它只是一個表示式,我們可以在呼叫的時候給他傳參,用法如下
  • 全域性區域性變數
        分三個例子說明變數作用域問題:
    例1:

 例2:global宣告全域性變數

例3:nonlocal宣告巢狀函式內部修改區域性變數(python3中適用)

  • 模組
    模組是一個python檔案,以py結尾     匯入模組的方式有三種:     1.    import + 模組名            我們在使用的時候就可以使用 模組名  . 函式名
            一個模組匯入只有一次,無論執行多少次import     2.    from 模組名 import 物件名         這個宣告是將部分我們需要匯入的函式或者變數匯入進來     3.    from 模組名 import *         將一個模組所有內容匯入進來  
  • 異常處理
     我們可以使用try+except來捕獲異常     我們只需在try中執行我們需要保護的程式碼,在except中去測試是否有誤,如果有誤我們也不會終端我們的程式碼

 

如果在except中不寫錯誤型別,我們就預設所有錯誤型別     try-finally 機制,為finally裡面的程式碼塊無論如何都會執行,哪怕前面有return 退出函式,他也會執行完finally程式碼後,再去return   
      我們也可以自己去主動丟擲異常,讓except捕獲:

 

Python中特殊語法: 閉包:    在函式巢狀中使用 filter函式用於過濾序列,過濾掉不符合條件的元素     filter ( function, 可迭代物件)        其中函式為判斷函式,將結果為真的組成一個序列返回

reduce函式,用於對引數序列中元素進行累積(這裡不能理解為累計相加!,用傳給reduce中的兩個元素進行操作,得到*的結果在於第三個資料給函式運算,最後得到一個結果

map函式,會對指定序列進行函式操作,並返回一個列表

  • Python中時間日期time模組,random模組
    這裡簡單的知道 顯示本地相應時間:     import    time                匯入time模組     print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime() ))

 

  • 檔案操作
檔案操作和c語言的檔案操作基本一致 我們進行檔案操作必須先的到一個檔案物件,才能去進行相關的操作     先來看open函式