Python函數參數--關鍵字參數、默認參數,以及參數的反轉過程

       一、函數簡介python

        函數是執行某種行爲並可能返回值的一系列代碼,函數的參數在圓括號中。判斷某個函數是否能夠執行,能夠經過內建的callable函數來判斷(callable在Python3.0中已再也不使用,須要使用hasattr表達式)。判斷過程以下:函數

import math
x=1
y=math.sqrt

callable(x)  #返回False
callable(y)  #返回True

      二、 函數的文檔字符串

       能夠經過函數的__doc__屬性來獲取函數的文檔字符串。函數的文檔字符串就是在函數的開頭寫下的字符串,用來對函數功能等進行解釋說明。以下面函數中的'this function is just a test.'就是文檔字符串。獲取下面函數文檔字符串的方法是:test1.__doc__,獲取math模塊中sqrt函數的文檔字符串的方法是:math.sqrt.__doc__this

def test1():
    'this function is just a test.'
    pass

       三、 函數的返回spa

        並不是全部的函數都有返回值,可是全部的函數都會返回東西。當函數沒有返回值時,返回的是None。當函數須要返回多個數值時,能夠經過return返回元組、列表、字典等來包含多個數值。code

       四、參數值的改變文檔

        當函數獲取實參後,有的能夠在參數內部將實參進行修改,有的則不能修改。能不能修改,取決於參數的類型,並非在函數內部對參數從新賦值就可以改變參數的值。字符串

        字符串、數字、和元組是不可變的,即沒法被修改的(即在函數內部不能真正改變傳入的參數)。當參數是列表、字典時是能夠修改的。字符串、數字、元組相似於C中的值傳遞,列表、字典相似於c中的引用傳遞。it

       當參數是列表,而又不想修改傳入參數時,能夠經過整個列表的分片來傳入列表的一個副本。即當name是一個列表時,則傳入name[:]來避免在函數內部將參數改變。io

       五、關鍵字參數和默認參數function

       普通的參數稱爲位置參數。有的時候,若是參數太多順序不太好記,所以使用參數名提供參數的方式來解決。即在調用函數時使用 形參名=實參名  的方式來傳遞參數。這樣雖然打的字多了,可是變得更清晰。

      默認參數是給參數提供默認值,即在定義函數的時候爲參數提供一個默認值。

     注意:位置參數和關鍵字參數能夠聯合使用,但必須位置參數在前面。

       六、使用任意數量的參數

       處理多餘位置參數,能夠在定義函數時指定一個參數並在前面加上星號。這樣函數將稱該參數做爲元組,將全部的多餘位置參數放置在該元組中。

     處理多餘關鍵字參數,能夠在定義函數時指定一個參數並在其前面加上兩個星號。這樣函數將該參數做爲字典,將全部的多餘關鍵字參數放置在該字典中。

      七、反轉過程

       當爲函數提供的參數是元組或字典時,有兩種狀況。

      1、函數定義時在參數前使用*或**來收集參數。那麼爲該函數傳遞元組或字典時,須要在是實參前也相應的加上*或**來對實參進行反轉。

     2、函數定義時,形參是一個普通參數。那麼爲該函數傳遞元組或字典時,不用在實參前加*或**了,直接在函數內部將該參數做爲元組或字典使用。

如:

def with_twostars(**params):
    print params['name']

def with_nostar(param2):
    print param2['name']
    
#調用函數方法   
var1={'name':'jinglingshu','sex':'female'}
with_twostars(**var1)  #實參須要進行反轉
with_nostar(var1)
相關文章
相關標籤/搜索