函式巢狀與裝飾器

2022-03-28 01:37:33 字數 2008 閱讀 5120

*應用場景,位置引數中代表將多個引數存入元祖,**將關鍵字引數傳入字典

位置引數: 

位置形參:必須被傳值,一一對應

位置實參:按從左到右的順序與形參一一對應

關鍵字引數:按照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.不修改呼叫方式

目的:在遵循一二的基礎上擴充套件新功能

裝飾器與被裝飾器的物件均可以是任意可呼叫的物件

裝飾器與函式多層巢狀

coding utf 8 def login func print the first level def inner1 args,kwargs print the second level def inner2 args print the third level func args func a...

裝飾器,高階函式,巢狀函式

裝飾器 本質是函式,裝飾其他函式 就是為其他函式新增其他功能 原則 1.不能修改被裝飾函式的源 2.不能修改被裝飾函式的呼叫方式 補充記憶體管理機制 函式即變數 匿名函式沒有名字,定義之後馬上被銷毀,除非賦值給乙個變數 def text1 print text1 text2 def text2 pr...

Python函式裝飾器的巢狀

函式裝飾器的巢狀,以及保持被裝飾函式元資訊的方法。decorator1 decorator2 def welcome welcome to www.manhuan.net 等價於 new welcom decorator1 decorator2 welcome new welcom welcome ...