allen22BeiJingpersonInfo('all" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python學習筆記(一)

系統 1905 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條評論
主站蜘蛛池模板: 国产精品一区久久久久 | 手机看片国产日韩 | 欧美视频在线播放 | 欧美日韩视频在线 | 免费在线观看视频a | 九九热线有精品视频99 | 人人澡人人澡人人看添欧美 | 亚洲AV久久久久久久无码 | 久爱青草视频在线观看 | 狠狠操电影 | 久草在线草a免费线看 | 色涩亚洲 | 欧美视频亚洲视频 | 日本一道一区二区免费看 | 久草手机视频在线 | 日韩欧美精品在线观看 | 999热精品 | 91精品天美精东蜜桃传媒免费 | 国产精品成人不卡在线观看 | 欧美大片一区二区 | 看全色黄大色黄大片色黄看的 | 精品久久久久久久久久久久久久 | 99av涩导航| 天天色综合色 | 欧美日韩精品久久久免费观看 | 日本一级毛片不卡免费 | 国产精品网址 | 欧美大片在线看免费观看 | 91在线播放免费不卡无毒 | 久久久久国产成人精品亚洲午夜 | 欧美国产高清欧美 | 久草在钱 | 免费午夜电影 | 黄色影视在线 | 亚洲综合首页 | 亚洲国产精品久久 | 午夜电影合集 | 被玩坏了的女老师(高h np) | 亚洲欧美中文日韩在线v日本 | 在线播放一区 | 天天色天天射天天干 |