函數 函數是對功能的封裝 語法: def函數名(形參列表) 函數體(代碼塊,return) 調用:函數名(實參列表) 2,返回值 return: 在函數執行的時候,若是遇到return,直接返回 1,若是函數什麼都不寫,不寫return,就沒有返回值,獲得的是none 2,在函數中間或者末尾寫return,返回的是none 3,在函數中寫return 值,返回一個值 4,在函數中能夠返回多個返回值,return 值1,值2,值3...,接收的是元組 3,參數 參數執行的時候給參數傳遞信息 *形參:函數聲明的位置的變量 *實參:函數調用的時候給的具體的值 傳參:把實參交給形參的過程 1,實參: 位置參數:按照形參的參數位置,給形參傳值 關鍵字參數:按照形參的名字給形參傳值 混合參數:既用位置參數,也用關鍵參數 2,形參: 位置參數 默認值參數: 先位置參數,後默認值參數 動態參數
1,函數的動態參數 1, *args 位置參數動態傳參 2, *kwargs 關鍵字參數動態傳參 順序: 位置參數 *args 默認值參數 *kwargs dec func(*args,*kwargs): pass 形參的位置*,** : 聚合 實參的位置*,** : 打散 2,命名空間 1,內置名稱空間 2,全局名稱空間 3,局部名稱空間 做用域: 1,全局做用域: 內置 + 全局 2,局部做用域: 局部(函數被調用) globals():查看全局中的內容 locals():查看做用域中的內容 3,函數的嵌套 函數能夠互相的嵌套 4,global和nonlocal的關鍵 global:在局部訪問全局中的內容 nonlocal:在局部訪問外層函數離它最近的那個變量
函數名的應用:(第一類對象) 函數名的命名規範和變量是同樣的 函數名其實就是變量名 能夠做爲列表中的元素進行存儲 def func1(): pass def func2(): pass list = [func1,func2] for el in list: el() 能夠做爲參數傳遞給函數 def func(): pass def proxy(fn): fn() proxy(func) 能夠做爲函數的返回值 def func(): def inner(): pass return inner) func()() 2,閉包 在內層函數中訪問外層函數的局部變量 好處: 1,保護你的變量不受外界影響 2,可讓變量常駐內存 寫法: def outer(): a = 10 def inner(): print(a) return inner