您好,登錄后才能下訂單哦!
結構:
def 函數名():
函數體
執行:
函數名()
返回值:
return
一,函數中,遇到return終止函數
二,返回值,返回給了函數的調用者:函數名()
return單個值,返回單個值
return多個值,返回一個由這多個值組成的元祖
函數傳參:
實參角度:
位置參數:從前至后一一對應
關鍵字參數:一一對應,不用按照順序
混合參數:關鍵字參數一定要在位置參數的后面
形參角度:
位置參數:按照順序,一一對應
默認參數:如果不傳參則使用默認參數,傳參則使用傳入參數,常用的會設置默認參數
動態參數(萬能參數):
*args接收全部位置參數,聚合為元祖 **kwargs接收全部關鍵字參數,聚合為字典
函數調用時,可迭代對象前加*,代表函數打散
*args,默認參數,**kwargs順序
函數的進階:
名稱空間:存儲的是全局(py文件)的變量與值的對應關系
臨時名稱空間:當函數執行時,會在內存中臨時開辟一個空間,此空間記錄函數中變量與值的對應關系,隨著函數的結束,臨時名稱空間而關閉
解釋:
Python代碼運行的時候遇到函數是怎么做的,從Python解釋器開始執行之后,就在內存中開辟里一個空間,每當遇到一個變量的時候,就把變量名和值之間對應的關系記錄下來,但是當遇到函數定義的時候,解釋器只是象征性的將函數名讀如內存,表示知道這個函數存在了,至于函數內部的變量和邏輯,解釋器根本不關心。
等執行到函數調用的時候,Python解釋器會再開辟一塊內存來儲存這個函數里面的內容,這個時候,才關注函數里面有哪些變量,而函數中的變量回儲存在新開辟出來的內存中,函數中的變量只能在函數內部使用,并且會隨著函數執行完畢,這塊內存中的所有內容也會被清空。
我們給這個‘存放名字與值的關系’的空間起了一個名字-------命名空間。
代碼在運行伊始,創建的存儲“變量名與值的關系”的空間叫做全局命名空間;
在函數的運行中開辟的臨時的空間叫做局部命名空間。
python中的空間:
全局名稱空間
臨時(局部)名稱空間
內置名稱空間:len print 等內置函數
加載順序:內置名稱空間-->全局名稱空間-->函數執行時:臨時名稱空間
作用域:
全局作用域:內置名稱空間 全局名稱空間
局部作用域:臨時(局部)名稱空間
取值順序:臨時(局部)名稱空間-->全局命名空間-->內置命名空間
取值順序滿足就近原則
函數坑:
取值:局部只能引用全局的變量但是不能修改,修改會報錯
global: 1,可以修改全局變量 2,在局部空間聲明全局變量
nonlocal: 1,不能操作全局變量 2,在局部作用域中,對父級作用域(或者更外層作用域非全局作用域)的變量進行引用和修改,并且引用的哪層,從那層及以下此變量全部發生改變 3,子名稱空間只能引用父級空間的變量,但是不能修改
函數的嵌套:
程序執行到哪里,只要遇到函數名(),就執行
函數名的運用:
直接打印函數名,返回函數內存地址
函數名可以作為函數的參數
函數名可以作為函數的返回值
函數可以作為容器類型的元素
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。