python函數詳解

結構:python

    def  函數名():ide

        函數體
函數


執行:spa

    函數名()orm


返回值:對象

    return
內存

    一,函數中,遇到return終止函數作用域

    二,返回值,返回給了函數的調用者:函數名()it

    return單個值,返回單個值class

    return多個值,返回一個由這多個值組成的元祖

    

函數傳參:

實參角度:

    位置參數:從前至後一一對應

    關鍵字參數:一一對應,不用按照順序

    混合參數:關鍵字參數必定要在位置參數的後面

形參角度:

    位置參數:按照順序,一一對應

    默認參數:若是不傳參則使用默認參數,傳參則使用傳入參數,經常使用的會設置默認參數

動態參數(萬能參數):

    *args接收所有位置參數,聚合爲元祖 **kwargs接收所有關鍵字參數,聚合爲字典

    函數調用時,可迭代對象前加*,表明函數打散

    *args,默認參數,**kwargs順序

函數的進階:

    名稱空間:存儲的是全局(py文件)的變量與值的對應關係

    臨時名稱空間:當函數執行時,會在內存中臨時開闢一個空間,此空間記錄函數中變量與值的對應關係,隨着函數的結束,臨時名稱空間而關閉

    解釋:

Python代碼運行的時候遇到函數是怎麼作的,從Python解釋器開始執行以後,就在內存中開闢裏一個空間,每當遇到一個變量的時候,就把變量名和值之間對應的關係記錄下來,可是當遇到函數定義的時候,解釋器只是象徵性的將函數名讀如內存,表示知道這個函數存在了,至於函數內部的變量和邏輯,解釋器根本不關心。

  等執行到函數調用的時候,Python解釋器會再開闢一塊內存來儲存這個函數裏面的內容,這個時候,才關注函數裏面有哪些變量,而函數中的變量回儲存在新開闢出來的內存中,函數中的變量只能在函數內部使用,而且會隨着函數執行完畢,這塊內存中的全部內容也會被清空。

咱們給這個‘存放名字與值的關係’的空間起了一個名字-------命名空間。

代碼在運行伊始,建立的存儲「變量名與值的關係」的空間叫作全局命名空間;

在函數的運行中開闢的臨時的空間叫作局部命名空間。

python中的空間:

    全局名稱空間

    臨時(局部)名稱空間

    內置名稱空間:len print 等內置函數

   加載順序:內置名稱空間-->全局名稱空間-->函數執行時:臨時名稱空間    

做用域:

    全局做用域:內置名稱空間 全局名稱空間

    局部做用域:臨時(局部)名稱空間

   取值順序:臨時(局部)名稱空間-->全局命名空間-->內置命名空間

    取值順序知足就近原則

image.png

函數坑:

    取值:局部只能引用全局的變量可是不能修改,修改會報錯

    global: 1,能夠修改全局變量 2,在局部空間聲明全局變量

    nonlocal: 1,不能操做全局變量 2,在局部做用域中,對父級做用域(或者更外層做用域非全局做用域)的變量進行引用和修改,而且引用的哪層,從那層及如下此變量所有發生改變 3,子名稱空間只能引用父級空間的變量,可是不能修改

image.png

image.png

函數的嵌套:

    程序執行到哪裏,只要遇到函數名(),就執行

image.png

image.png

函數名的運用:

直接打印函數名,返回函數內存地址

函數名能夠做爲函數的參數

函數名能夠做爲函數的返回值

image.png

函數能夠做爲容器類型的元素

相關文章
相關標籤/搜索