allen22BeiJingpersonInfo('all" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python學習筆記(一)

系統 2186 0

這里主要是總結學習過程中遇到的一些問題和注意事項


文章目錄

  • 關于函數參數問題
    • 默認參數
    • 可變參數
    • 關鍵參數
  • 關于函數作為返回值
  • 關于Function 和 Method理解


  1. 關于函數參數問題

    默認參數

    函數參數可以有默認參數,而默認參數使用不當很容易掉坑里。

                    
                      
                        def
                      
                      
                        personInfo
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age 
                      
                        =
                      
                      
                        22
                      
                      
                        ,
                      
                      city 
                      
                        =
                      
                      
                        'BeiJing'
                      
                      
                        )
                      
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      city
                      
                        )
                      
                      
    
    personInfo
                      
                        (
                      
                      
                        'allen'
                      
                      
                        )
                      
                      
                        # ==> allen 22 BeiJing        
                      
                      
    personInfo
                      
                        (
                      
                      
                        'allen'
                      
                      
                        ,
                      
                      city 
                      
                        =
                      
                      
                        'SH'
                      
                      
                        )
                      
                      
                        # ==> allen 22 SH
                      
                      
    personInfo
                      
                        (
                      
                      
                        'allen'
                      
                      
                        ,
                      
                      
                        18
                      
                      
                        )
                      
                      
                        # ==> allen 18 BeiJing
                      
                    
                  

    以上函數執行的時候,沒有問題,很正常。在看一下下面的函數

                    
                      
                        def
                      
                      
                        add_end
                      
                      
                        (
                      
                      L 
                      
                        =
                      
                      
                        [
                      
                      
                        ]
                      
                      
                        )
                      
                      
                        :
                      
                      
    L
                      
                        .
                      
                      append
                      
                        (
                      
                      
                        'END'
                      
                      
                        )
                      
                      
                        print
                      
                      
                        (
                      
                      L
                      
                        )
                      
                      
    
    add_end
                      
                        (
                      
                      
                        [
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ]
                      
                      
                        )
                      
                      
                        # ==> [1, 2, 3, 'END']
                      
                      
    add_end
                      
                        (
                      
                      
                        )
                      
                      
                        # ==> ['END']
                      
                      
    add_end
                      
                        (
                      
                      
                        )
                      
                      
                        # ==> ['END', 'END']
                      
                    
                  

    我們看到默認值是 [] ,為什么調用兩次之后 add_end() 之后會出現 ['END', 'END'] 這樣的結果,原因是 [] 是可變對象,如果學過c++的同學可能很容易理解,在里的 L 是一個指針,指向一塊地址,而這塊地址的內容在多次調用 add_end() 之后內容發生變化,而指針所指向的地址未發生變化。這里我們需要注意: 定義默認參數要牢記一點:默認參數必須指向不可變對象
    修改上述例子:

                    
                      
                        def
                      
                      
                        add_end
                      
                      
                        (
                      
                      L
                      
                        =
                      
                      
                        None
                      
                      
                        )
                      
                      
                        :
                      
                      
                        if
                      
                       L 
                      
                        is
                      
                      
                        None
                      
                      
                        :
                      
                      
    		L 
                      
                        =
                      
                      
                        [
                      
                      
                        ]
                      
                      
    	L
                      
                        .
                      
                      append
                      
                        (
                      
                      
                        'END'
                      
                      
                        )
                      
                      
                        print
                      
                      
                        (
                      
                      L
                      
                        )
                      
                    
                  

    可變參數

    在參數前面加一個 * 號,函數內部參數 param 接收到一個tuple。同樣Python允許你在list或tuple前面加一個 * 號,把list或tuple的元素變成可變參數傳進去

                    
                      
                        def
                      
                      
                        printParam
                      
                      
                        (
                      
                      
                        *
                      
                      param
                      
                        )
                      
                      
                        :
                      
                      
                        for
                      
                       x 
                      
                        in
                      
                       param
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      x
                      
                        )
                      
                      
    
    printParam
                      
                        (
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        )
                      
                      
                        # ==> 1,2,3
                      
                      
    printParam
                      
                        (
                      
                      
                        [
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ]
                      
                      
                        )
                      
                      
                        # ==> [1,2,3]
                      
                      
    printParam
                      
                        (
                      
                      
                        *
                      
                      
                        [
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ]
                      
                      
                        )
                      
                      
                        # ==> 1,2,3
                      
                    
                  

    關鍵參數

    關鍵參數
    ** +參數,如 **kw , kw 將獲得一個dict.

                    
                      
                        # 關鍵字參數
                      
                      
                        def
                      
                      
                        person
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      
                        **
                      
                      kw
                      
                        )
                      
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      
                        'name:'
                      
                      
                        ,
                      
                      name
                      
                        ,
                      
                      
                        'age:'
                      
                      
                        ,
                      
                      age
                      
                        ,
                      
                      
                        'kw:'
                      
                      
                        ,
                      
                      kw
                      
                        )
                      
                      
                        ;
                      
                      
    
    person
                      
                        (
                      
                      
                        'yy'
                      
                      
                        ,
                      
                      
                        22
                      
                      
                        )
                      
                      
    person
                      
                        (
                      
                      
                        'yy'
                      
                      
                        ,
                      
                      
                        22
                      
                      
                        ,
                      
                      city 
                      
                        =
                      
                      
                        'BJ'
                      
                      
                        ,
                      
                      addr 
                      
                        =
                      
                      
                        'CY'
                      
                      
                        )
                      
                    
                  

    命名關鍵參數
    和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*, 后面的參數被視為命名關鍵字參數。有一種情況,如果函數定義中已經有了一個可變參數,后面跟著的命名關鍵字參數就不再需要一個特殊分隔符 了。

                    
                      
                        # 命名關鍵字參數
                      
                      
                        # 和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*,*后面的參數被視為命名關鍵字參數
                      
                      
                        def
                      
                      
                        student
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      
                        *
                      
                      
                        ,
                      
                      city
                      
                        ,
                      
                      grade
                      
                        )
                      
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      
                        'name:%s,age:%d,city:%s,grade:%s'
                      
                      
                        %
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      city
                      
                        ,
                      
                      grade
                      
                        )
                      
                      
                        )
                      
                      
    
    student
                      
                        (
                      
                      
                        'DH'
                      
                      
                        ,
                      
                      
                        12
                      
                      
                        ,
                      
                      city
                      
                        =
                      
                      
                        "BeiJing"
                      
                      
                        ,
                      
                      grade 
                      
                        =
                      
                      
                        'A'
                      
                      
                        )
                      
                      
                        #==> name:DH,age:12,city:BeiJing,grade:A
                      
                      
    student
                      
                        (
                      
                      
                        'DH'
                      
                      
                        ,
                      
                      
                        12
                      
                      
                        )
                      
                      
                        #==> 提示缺少 'city' and 'grade' 參數     
                      
                      
                        # 如果函數定義中已經有了一個可變參數,后面跟著的命名關鍵字參數就不再需要一個特殊分隔符*了:
                      
                      
                        def
                      
                      
                        student2
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      
                        *
                      
                      args
                      
                        ,
                      
                      city
                      
                        ,
                      
                      grade
                      
                        )
                      
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      
                        'name:%s,age:%d,city:%s,grade:%s, args:'
                      
                      
                        %
                      
                      
                        (
                      
                      name
                      
                        ,
                      
                      age
                      
                        ,
                      
                      city
                      
                        ,
                      
                      grade
                      
                        )
                      
                      
                        ,
                      
                      args
                      
                        )
                      
                      
    
    student2
                      
                        (
                      
                      
                        'DH'
                      
                      
                        ,
                      
                      
                        12
                      
                      
                        ,
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        2
                      
                      
                        ,
                      
                      
                        3
                      
                      
                        ,
                      
                      
                        4
                      
                      
                        ,
                      
                      city
                      
                        =
                      
                      
                        "BeiJing"
                      
                      
                        ,
                      
                      grade 
                      
                        =
                      
                      
                        'A'
                      
                      
                        )
                      
                      
                        #==> name:DH,age:12,city:BeiJing,grade:A, args: (1, 2, 3, 4)
                      
                    
                  
  2. 關于函數作為返回值

    我們來看一個函數

                    
                      
                        def
                      
                      
                        count
                      
                      
                        (
                      
                      
                        )
                      
                      
                        :
                      
                      
    	fs 
                      
                        =
                      
                      
                        [
                      
                      
                        ]
                      
                      
                        for
                      
                       i 
                      
                        in
                      
                      
                        range
                      
                      
                        (
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        4
                      
                      
                        )
                      
                      
                        :
                      
                      
                        def
                      
                      
                        f
                      
                      
                        (
                      
                      
                        )
                      
                      
                        :
                      
                      
                        return
                      
                       i 
                      
                        *
                      
                       i
    		fs
                      
                        .
                      
                      append
                      
                        (
                      
                      f
                      
                        )
                      
                      
                        return
                      
                       fs
    
    
                      
                        for
                      
                       f 
                      
                        in
                      
                       count
                      
                        (
                      
                      
                        )
                      
                      
                        :
                      
                      
                        print
                      
                      
                        (
                      
                      f
                      
                        (
                      
                      
                        )
                      
                      
                        )
                      
                      
                        //=
                      
                      
                        =
                      
                      
                        >
                      
                      
                        9
                      
                      
                        9
                      
                      
                        9
                      
                    
                  

    看看這個函數,輸出結果跟我們預想的1,4,9不符合。這是因為變量 i 在循環3次之后, i 已經變成3了,因此結果是9,9,9
    注意:返回閉包時牢記一點,返回函數不要引用任何循環變量,或者后續會發生變化的變量
    上個函數我們做個改變

                    
                      
                        def
                      
                      
                        count
                      
                      
                        (
                      
                      
                        )
                      
                      
                        :
                      
                      
                        def
                      
                      
                        f
                      
                      
                        (
                      
                      j
                      
                        )
                      
                      
                        :
                      
                      
                        def
                      
                      
                        g
                      
                      
                        (
                      
                      
                        )
                      
                      
                        :
                      
                      
                        return
                      
                       j 
                      
                        *
                      
                       j
    		
                      
                        return
                      
                       g
    	fs 
                      
                        =
                      
                      
                        [
                      
                      
                        ]
                      
                      
                        for
                      
                       x 
                      
                        in
                      
                      
                        range
                      
                      
                        (
                      
                      
                        1
                      
                      
                        ,
                      
                      
                        4
                      
                      
                        )
                      
                      
                        :
                      
                      
    		fs
                      
                        .
                      
                      append
                      
                        (
                      
                      f
                      
                        (
                      
                      x
                      
                        )
                      
                      
                        )
                      
                      
                        ;
                      
                      
                        return
                      
                       fs
    
                    
                  
  3. 關于Function 和 Method理解

                    
                      
                        class
                      
                      
                        Student
                      
                      
                        (
                      
                      
                        object
                      
                      
                        )
                      
                      
                        :
                      
                      
                        def
                      
                      
                        set_age
                      
                      
                        (
                      
                      self
                      
                        ,
                      
                      age
                      
                        )
                      
                      
                        :
                      
                      
    		self
                      
                        .
                      
                      age 
                      
                        =
                      
                       age
    
    
                      
                        def
                      
                      
                        set_name
                      
                      
                        (
                      
                      self
                      
                        ,
                      
                      name
                      
                        )
                      
                      
                        :
                      
                      
    	self
                      
                        .
                      
                      name 
                      
                        =
                      
                       name
    
    Student
                      
                        .
                      
                      set_name 
                      
                        =
                      
                       set_name
    
                      
                        print
                      
                      
                        (
                      
                      
                        type
                      
                      
                        (
                      
                      Student
                      
                        .
                      
                      set_name
                      
                        )
                      
                      
                        )
                      
                      
                        #==> 
                        
                      
                      
                        print
                      
                      
                        (
                      
                      
                        type
                      
                      
                        (
                      
                      Student
                      
                        .
                      
                      set_age
                      
                        )
                      
                      
                        )
                      
                      
                        #==> 
                        
                      
                      
    
    s 
                      
                        =
                      
                       Student
                      
                        (
                      
                      
                        )
                      
                      
                        print
                      
                      
                        (
                      
                      
                        type
                      
                      
                        (
                      
                      s
                      
                        .
                      
                      set_name
                      
                        )
                      
                      
                        )
                      
                      
                        #==> 
                        
                      
                      
                        print
                      
                      
                        (
                      
                      
                        type
                      
                      
                        (
                      
                      s
                      
                        .
                      
                      set_age
                      
                        )
                      
                      
                        )
                      
                      
                        #==> 
                        
                      
                    
                  

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論