allen22BeiJingpersonInfo('all" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python學習筆記(一)

系統(tǒng) 1961 0

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


文章目錄

  • 關(guān)于函數(shù)參數(shù)問題
    • 默認參數(shù)
    • 可變參數(shù)
    • 關(guān)鍵參數(shù)
  • 關(guān)于函數(shù)作為返回值
  • 關(guān)于Function 和 Method理解


  1. 關(guān)于函數(shù)參數(shù)問題

    默認參數(shù)

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

                    
                      
                        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
                      
                    
                  

    以上函數(shù)執(zhí)行的時候,沒有問題,很正常。在看一下下面的函數(shù)

                    
                      
                        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']
                      
                    
                  

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

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

    可變參數(shù)

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

                    
                      
                        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
                      
                    
                  

    關(guān)鍵參數(shù)

    關(guān)鍵參數(shù)
    ** +參數(shù),如 **kw , kw 將獲得一個dict.

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

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

                    
                      
                        # 命名關(guān)鍵字參數(shù)
                      
                      
                        # 和關(guān)鍵字參數(shù)**kw不同,命名關(guān)鍵字參數(shù)需要一個特殊分隔符*,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)
                      
                      
                        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' 參數(shù)     
                      
                      
                        # 如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個特殊分隔符*了:
                      
                      
                        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. 關(guān)于函數(shù)作為返回值

    我們來看一個函數(shù)

                    
                      
                        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
                      
                    
                  

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

                    
                      
                        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. 關(guān)于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
                      
                        )
                      
                      
                        )
                      
                      
                        #==> 
                        
                      
                    
                  

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 逊克县| 无棣县| 龙门县| 澄江县| 耿马| 彭山县| 新化县| 桐梓县| 福泉市| 靖西县| 安岳县| 罗江县| 团风县| 武夷山市| 兰考县| 平乡县| 中西区| 慈利县| 佳木斯市| 精河县| 汕头市| 西藏| 靖安县| 贵港市| 沧州市| 灵璧县| 湖北省| 景洪市| 东丽区| 龙游县| 金溪县| 漠河县| 镇赉县| 岱山县| 吉木乃县| 轮台县| 阿瓦提县| 老河口市| 商丘市| 乐清市| 江城|