1. 程式人生 > >Python自動化運維之函數

Python自動化運維之函數

python 函數

1、函數簡介
簡而言之,函數就是將一些語句集中方在一起的部件,它能夠不止一次的在程序中運行。函數還能夠計算出一個返回值,並能夠改變作為函數輸入的參數,而這些參數在代碼運行時也許每次都不相同。以函數的形式去編寫一個操作可以使它成為一個能夠廣泛應用的工具,讓我們在不同的情形下都能夠使用它。
更具體地說,函數是在編程過程中剪剪貼貼的替代——我們不再有一個操作的代碼的多個冗余副本,而是將代碼包含到一個單獨的函數中。通過這樣做,我們可以大大減少今後的工作:如果這個操作之後必須要修改,我們只需要修改其中的一份拷貝,而不是所有代碼。
2、為什麽要使用函數
1. 最大化實現代碼重用和最小化實現代碼冗余
函數允許整合通用化代碼,以便這些代碼能夠多次使用。因為它們允許一處編寫多處運行,Python函數是這個語言中最基本的組成工具——它讓我們在程序中減少代碼的冗余成為現實, 並為代碼的維護節省了不少的力氣。

2. 程序執行流程的分解
函數可以將一個程序分割定義為不同部分的工具。舉個栗子:去做一份比薩,開始需要混合面粉,將面粉攪拌勻,增加頂部原料和烤等。如果你是在編寫一個制作比薩的機器人的程序, 函數將會將整個“做比薩”這個任務分割成為獨立的函數來完成整個流程中的每個子任務。獨立的實現較小的任務要比一次完成整個流程要容易得多。一般來說,函數講的是流程: 告訴你怎樣去做某事,而不是讓你使用它去做的事。
2、函數的定義
函數定義格式:

    def 函數名(形參):
        ‘‘‘註釋‘‘‘
        函數體
        return 返回值

3、函數的使用
先定義,再調用

4、函數參數分類
函數參數可分為形參和實參。
1. 實參:
位置實參:和形參位置對應賦值
關鍵字實參:指的是按照形參名稱一一賦值
2. 形參:必須被傳值,是必備參數。形參有分為位置形參、默認形參和可變長形參
位置形參:如果在定義時不賦值,在調用的時候必須賦值。
舉例:

        def foo(name,age):
            print(name,end=‘\t‘)
            print(age)
        # 位置實參
        foo("xuan",18)

默認形參:如果在定義時賦值又稱為默認形參,在調用的時候可以不必在賦值,有可稱為缺省形參。

舉例:

        def foo(name,age,sex="男"):
            print(name,age,sex)
        foo("xuan",18)

可變長形參:實參個數多於形參,就必須使用可變長的形參,這也是可變長形參的作用。
實參溢出有兩種情況:
位置實參溢出:
使用*args形參處理,存儲成元組數值類型
舉例:

                def foo(name,age,*agrs):
                    print(name,age,agrs)
                foo("xuan",18,19,20)

關鍵字實參溢出:
使用**kewargs形參處理,存儲成字典數值類型
舉例:

                def foo(name,age,**kwagrs):
                    print(name,age,kwagrs)
                foo("xuan",18,x=19,y=20)

命名關鍵字形參:在*後面定義的形參稱為命名關鍵字形參,必須關鍵字實參的形式傳值
舉例:

        def foo(*args,x):
            print(args,x)
        # foo(1,2.3) # 報錯提示沒有為x傳參
        foo(1,2,3,x=4) # 正確傳參

常見問題小結:
問題1:位置形參必須放到默認形參之前

    def foo(x,y=1)
        print(x,y)
    foo(2)

問題2:默認形參和外部變量賦值無關

    b=1
    def foo(y=b,x)
        print(x,y)
    b
    foo()

問題3:默認形參的值為不可變數值類型
問題4:語法規定位置實參必須在關鍵字實參的前面

foo(‘xuan‘,sex=‘male‘,age=18)

問題5:一定不要對同一個形參多次賦值

foo(‘xuan‘,sex=‘male‘,age=18,namae=‘xuan1‘)

本文出自 “炫維” 博客,請務必保留此出處http://xuanwei.blog.51cto.com/11489734/1949948

Python自動化運維之函數