*應用場景,位置參數中表明將多個參數存入元祖,**將關鍵字參數傳入字典編程
位置參數: 閉包
位置形參:必須被傳值,一一對應函數
位置實參:按從左到右的順序與形參一一對應對象
關鍵字參數:按照key=value形式指名道姓的爲形參傳值,能夠徹底不按照順序作用域
1.關鍵字實參必須在位置參數的後面源碼
2.能夠混用位置實參與關鍵字實參,但不能爲同一個形參重複傳值面向對象編程
默認參數:
形參有默認值容器
可變長參數基礎
形參:*args,**kwargs將多餘的參數分別封裝成元祖與字典變量
實參:將args kwargs分別打散
什麼是命名關鍵字參數?
格式:在*後面參數都是命名關鍵字參數
特色:必須被傳值
2.約束函數的調用者必須按照key=value的形式傳值
3.約束函數的調用者必須使用咱們指定的鍵名
在面向對象編程中,一切皆對象
具體的體現爲:
1:函數能夠被引用
2:函數能夠做爲函數的參數
3:函數能夠做爲函數的返回值
4:能夠被存儲到容器類型中
2.函數嵌套
1.嵌套調用:在一個函數中調用了另外一個函數
2:嵌套定義 在一個函數中定義了另外一個函數
3.名稱空間
存儲變量名與值綁定關係的地方
名稱空間的分類
內置名稱空間:存儲解釋器自帶的一些名稱與值得對應關係
(Python解釋器啓動時建立全部代碼所有執行完畢 關閉解釋器時銷燬)
如 print len max min
全局名稱空間 哪些數據在全局空間?
文件級別的名稱 只要你的名字的定義是頂着最左邊寫的就是全局空間
除了內置的函數內的,都在全局中(執行Python文件建立全局名稱空間 關閉解釋器時 銷燬)
局部名稱空間 只要是函數內的名稱就是局部的
(調用函數時建立 函數執行完畢時銷燬)
名稱空間的加載順序
內置的-全局的-局部的
名稱的查找順序
局部-全局的-內置的
4.做用域(做用範圍)
域 指的是區域 範圍的意思
全局的名稱空間和內置的名稱空間 在使用上沒什麼區別
局部的和全局的內置的 就區別了 局部定義的只能在局部使用
給三個空間劃分範圍
全局的和內置能夠劃分爲同一個範圍
global表示的全局範圍,就是所謂的全局做用域
局部的單獨劃分爲一個範圍
local 局部做用域
5.閉包函數
閉包函數 也是一個函數
與普通函數的區別
1.定義在另外一個函數中的
2.在這個內部的函數中使用了外部的名稱
閉包函數,當調用一個函數內部的函數時,還將返回外部函數的數據,這樣的函數稱之爲閉包函數:定義在一個函數內部,且訪問外部函數的數據
函數的做用域在定義時就固定了,與調用的位置毫無關係
——closure_用於訪問閉包時,打包的數據
爲函數體傳值的方式
方式一:將值以參數的形式的傳入
方式二:在函數內部爲變量賦值
什麼是裝飾器?
什麼是裝飾 給一個已有的對象(一個函數)添加新的功能
爲何要裝飾 加強功能
裝飾器就是給其餘函數添加功能的函數
無參裝飾器格式:
def outer(func):
def inner(*args,**kwargs):
res = func()
return res
return inne
開放關閉原則
軟件一旦上線後,就應該遵循開放關閉原則,即對修改源代碼是封閉的,對功能的擴展是開放的
也就是說咱們必須找到一種解決方案
可以在不修改一個功能源代碼以及調用方式的前提下,爲期加上新功能
總結:原則以下
1.不修改源碼
2.不修改調用方式
目的:在遵循一二的基礎上擴展新功能
裝飾器與被裝飾器的對象都可以是任意可調用的對象